public static BeanDefinitionHolder parseConfigurationPointBean(Element element, ConfigurationPoint cp,
ParserContext parserContext,
BeanDefinitionBuilder containingBeanBuilder) {
assertNotNull(cp, "configurationPoint");
BeanDefinitionParserDelegate delegate = parserContext.getDelegate();
boolean isInnerBean = containingBeanBuilder != null;
BeanDefinition containingBean = isInnerBean ? containingBeanBuilder.getRawBeanDefinition() : null;
ElementSelector customSelector = ns(cp.getNamespaceUri());
// 解析custom element。
if (customSelector.accept(element)) {
AbstractBeanDefinition bean = (AbstractBeanDefinition) delegate.parseCustomElement(element, containingBean);
String beanName = trimToNull(element.getAttribute("id"));
if (beanName == null) {
beanName = BeanDefinitionReaderUtils.generateBeanName(bean, parserContext.getRegistry(), isInnerBean);
}