@Override public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { Set<String> basePackages = getBasePackages(importingClassMetadata); ClassPathScanningCandidateComponentProvider scanner = getScanner(); scanner.addIncludeFilter(new AnnotationTypeFilter(MuonRepository.class)); for (String basePackage : basePackages) { Set<BeanDefinition> candidateComponents = scanner .findCandidateComponents(basePackage); for (BeanDefinition candidateComponent : candidateComponents) { if (candidateComponent instanceof AnnotatedBeanDefinition) { AnnotatedBeanDefinition beanDefinition = (AnnotatedBeanDefinition) candidateComponent; AnnotationMetadata annotationMetadata = beanDefinition.getMetadata(); Assert.isTrue(annotationMetadata.isInterface(), "@FeignClient can only be specified on an interface"); BeanDefinitionHolder holder = createBeanDefinition(annotationMetadata); BeanDefinitionReaderUtils.registerBeanDefinition(holder, registry); } } } }
protected String generateBeanName(String prefix, BeanDefinition def, ParserContext parserContext) { BeanDefinitionRegistry registry = parserContext.getRegistry(); String name = prefix + BeanDefinitionReaderUtils.generateBeanName(def, registry); String generated = name; int counter = 0; while (registry.containsBeanDefinition(generated)) { generated = name + BeanFactoryUtils.GENERATED_BEAN_NAME_SEPARATOR + counter; if (parserContext.isNested()) { generated = generated.concat("#generated"); } counter++; } return generated; }
public static BeanDefinitionHolder register(Element ele, BeanDefinitionHolder bdHolder, ParserContext parserContext) { if (bdHolder != null) { String name = bdHolder.getBeanName(); checkReservedName(name, ele, parserContext); checkUniqueName(name, parserContext.getRegistry()); try { // add non-lenient constructor resolution BeanDefinition beanDefinition = bdHolder.getBeanDefinition(); if (beanDefinition instanceof AbstractBeanDefinition) { AbstractBeanDefinition abd = (AbstractBeanDefinition) beanDefinition; abd.setLenientConstructorResolution(false); abd.setNonPublicAccessAllowed(false); } // Register the final decorated instance. BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, parserContext.getRegistry()); } catch (BeanDefinitionStoreException ex) { parserContext.getReaderContext().error( "Failed to register bean definition with name '" + bdHolder.getBeanName() + "'", ele, ex); } // register component (and send registration events) parserContext.registerComponent(new BeanComponentDefinition(bdHolder)); } return bdHolder; }
/** * Generates a Blueprint specific bean name. * * @param definition * @param registry * @param isInnerBean * @return * @throws BeanDefinitionStoreException */ public static String generateBlueprintBeanName(BeanDefinition definition, BeanDefinitionRegistry registry, boolean isInnerBean) throws BeanDefinitionStoreException { String initialName = BLUEPRINT_GENERATED_NAME_PREFIX + BeanDefinitionReaderUtils.generateBeanName(definition, registry, isInnerBean); String generatedName = initialName; int counter = 0; while (registry.containsBeanDefinition(generatedName)) { generatedName = initialName + BeanDefinitionReaderUtils.GENERATED_BEAN_NAME_SEPARATOR + counter; counter++; } return generatedName; }
/** * Process the given bean element, parsing the bean definition * and registering it with the registry. */ protected void processBeanDefinition(Element ele, BeanDefinitionParserDelegate delegate) { BeanDefinitionHolder bdHolder = delegate.parseBeanDefinitionElement(ele); if (bdHolder != null) { bdHolder = delegate.decorateBeanDefinitionIfRequired(ele, bdHolder); try { // Register the final decorated instance. BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, getReaderContext().getRegistry()); } catch (BeanDefinitionStoreException ex) { getReaderContext().error("Failed to register bean definition with name '" + bdHolder.getBeanName() + "'", ele, ex); } // Send registration event. getReaderContext().fireComponentRegistered(new BeanComponentDefinition(bdHolder)); } }
private void load(ClassLoader loader, String name) { try { DefaultListableBeanFactory lbf = (DefaultListableBeanFactory) applicationContext.getAutowireCapableBeanFactory(); BeanDefinition bd = BeanDefinitionReaderUtils.createBeanDefinition(null, name, loader); String dynamicBeanName = generator.uuid(); lbf.registerBeanDefinition(dynamicBeanName, bd); Object bean = lbf.getBean(dynamicBeanName); String beanName = getBeanName(bean.getClass()); Object oldBean = null; if (beanName != null) { oldBean = container.getBean(beanName); container.mapBeanName(beanName, dynamicBeanName); } inject(bean.getClass(), null, bean); inject(bean, oldBean); } catch (Exception e) { logger.warn(e, "重新载入[{}]时发生异常!", name); } }
@Test public void naming() { String className = GeneratedNameBean.class.getName(); String targetName = className + BeanDefinitionReaderUtils.GENERATED_BEAN_NAME_SEPARATOR + "0"; GeneratedNameBean topLevel1 = (GeneratedNameBean) beanFactory.getBean(targetName); assertNotNull(topLevel1); targetName = className + BeanDefinitionReaderUtils.GENERATED_BEAN_NAME_SEPARATOR + "1"; GeneratedNameBean topLevel2 = (GeneratedNameBean) beanFactory.getBean(targetName); assertNotNull(topLevel2); GeneratedNameBean child1 = topLevel1.getChild(); assertNotNull(child1.getBeanName()); assertTrue(child1.getBeanName().startsWith(className)); GeneratedNameBean child2 = topLevel2.getChild(); assertNotNull(child2.getBeanName()); assertTrue(child2.getBeanName().startsWith(className)); assertFalse(child1.getBeanName().equals(child2.getBeanName())); }
private void registerSoapClient(BeanDefinitionRegistry registry, AnnotationMetadata annotationMetadata, Map<String, Object> attributes) { String className = annotationMetadata.getClassName(); BeanDefinitionBuilder definition = BeanDefinitionBuilder .genericBeanDefinition(SoapClientFactoryBean.class); validate(attributes); Class<?> serviceType = getClientService(attributes); // Type name of annotated interface definition.addPropertyValue("type", getClassByName(className)); // Soap service type definition.addPropertyValue("service", serviceType); definition.addPropertyValue("soapMethods", getAnnotatedMethods(annotationMetadata)); definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE); String alias = className + "SoapClient"; AbstractBeanDefinition beanDefinition = definition.getBeanDefinition(); beanDefinition.setPrimary(true); BeanDefinitionHolder holder = new BeanDefinitionHolder(beanDefinition, className, new String[] { alias }); BeanDefinitionReaderUtils.registerBeanDefinition(holder, registry); }
private void registerRetrofitClient(BeanDefinitionRegistry registry, AnnotationMetadata annotationMetadata, Map<String, Object> attributes) { String className = annotationMetadata.getClassName(); BeanDefinitionBuilder definition = BeanDefinitionBuilder .genericBeanDefinition(RetrofitClientFactoryBean.class); validate(attributes); definition.addPropertyValue("url", getUrl(attributes)); String name = getName(attributes); definition.addPropertyValue("name", name); definition.addPropertyValue("type", className); definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE); String alias = name + "RetrofitClient"; AbstractBeanDefinition beanDefinition = definition.getBeanDefinition(); beanDefinition.setPrimary(true); String qualifier = getQualifier(attributes); if (StringUtils.hasText(qualifier)) { alias = qualifier; } BeanDefinitionHolder holder = new BeanDefinitionHolder(beanDefinition, className, new String[] { alias }); BeanDefinitionReaderUtils.registerBeanDefinition(holder, registry); }
public void testNaming() { String className = GeneratedNameBean.class.getName(); String targetName = className + BeanDefinitionReaderUtils.GENERATED_BEAN_NAME_SEPARATOR + "0"; GeneratedNameBean topLevel1 = (GeneratedNameBean) beanFactory.getBean(targetName); assertNotNull(topLevel1); targetName = className + BeanDefinitionReaderUtils.GENERATED_BEAN_NAME_SEPARATOR + "1"; GeneratedNameBean topLevel2 = (GeneratedNameBean) beanFactory.getBean(targetName); assertNotNull(topLevel2); GeneratedNameBean child1 = topLevel1.getChild(); assertNotNull(child1.getBeanName()); assertTrue(child1.getBeanName().startsWith(className)); GeneratedNameBean child2 = topLevel2.getChild(); assertNotNull(child2.getBeanName()); assertTrue(child2.getBeanName().startsWith(className)); assertFalse(child1.getBeanName().equals(child2.getBeanName())); }
public BeanDefinition parse(Element element, ParserContext parserContext) { RootBeanDefinition beanDef = new RootBeanDefinition(); // never null since the schema requires it String id = element.getAttribute(ID); String classname = element.getAttribute(CLASS); if (!(StringUtils.hasLength(classname))) { System.out.println("Tag 'action' must have a 'class' attribute"); return null; } beanDef.setBeanClassName(classname); parseRef(element, beanDef); // create a bean definition holder to be able to register the // bean definition with the bean definition registry // (obtained through the ParserContext) BeanDefinitionHolder holder = new BeanDefinitionHolder(beanDef, id); // register the BeanDefinitionHolder (which contains the bean definition) // with the BeanDefinitionRegistry BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry()); return beanDef; }
public BeanDefinition parse(Element element, ParserContext parserContext) { RootBeanDefinition beandef = new RootBeanDefinition(); // never null since the schema requires it String id = element.getAttribute(ID); if(classname == null || classname.isEmpty()) classname = DEFAULT_CLASS; beandef.setBeanClassName(classname); parseTemplate(element, beandef); beandef.setDescription(DomUtils.getChildElementValueByTagName(element, DESCRIPTION)); parseAction(element, beandef); parseFields(element, beandef, parserContext); parseChannel(element, beandef); BeanDefinitionHolder holder = new BeanDefinitionHolder(beandef, id); // register the BeanDefinitionHolder (which contains the bean definition) // with the BeanDefinitionRegistry BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry()); return beandef; }
public static BeanDefinitionHolder registerAmazonWebserviceClient( Object source, BeanDefinitionRegistry registry, String serviceNameClassName, String customRegionProvider, String customRegion) { String beanName = getBeanName(serviceNameClassName); if (registry.containsBeanDefinition(beanName)) { return new BeanDefinitionHolder(registry.getBeanDefinition(beanName), beanName); } BeanDefinition definition = getAmazonWebserviceClientBeanDefinition(source, serviceNameClassName, customRegionProvider, customRegion, registry); BeanDefinitionHolder holder = new BeanDefinitionHolder(definition, beanName); BeanDefinitionReaderUtils.registerBeanDefinition(holder, registry); return holder; }
public static void registerRegionProvider(BeanDefinitionRegistry registry, boolean autoDetect, String configuredRegion) { if (autoDetect && StringUtils.hasText(configuredRegion)) { throw new IllegalArgumentException("No region must be configured if autoDetect is defined as true"); } AbstractBeanDefinition beanDefinition; if (autoDetect) { beanDefinition = BeanDefinitionBuilder.genericBeanDefinition(Ec2MetadataRegionProvider.class).getBeanDefinition(); } else if (StringUtils.hasText(configuredRegion)) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(StaticRegionProvider.class); builder.addConstructorArgValue(configuredRegion); beanDefinition = builder.getBeanDefinition(); } else { throw new IllegalArgumentException("Region must be manually configured or autoDetect enabled"); } BeanDefinitionReaderUtils.registerBeanDefinition(new BeanDefinitionHolder(beanDefinition, REGION_PROVIDER_BEAN_NAME), registry); AmazonWebserviceClientConfigurationUtils.replaceDefaultRegionProvider(registry, REGION_PROVIDER_BEAN_NAME); }
@Override protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { if (StringUtils.hasText(element.getAttribute("user-tags-map"))) { BeanDefinitionBuilder userTagsBuilder = BeanDefinitionBuilder.genericBeanDefinition(USER_TAGS_BEAN_CLASS_NAME); userTagsBuilder.addConstructorArgReference( getCustomClientOrDefaultClientBeanName(element, parserContext, "amazon-ec2", EC2_CLIENT_CLASS_NAME)); if (StringUtils.hasText(element.getAttribute("instance-id-provider"))) { userTagsBuilder.addConstructorArgReference(element.getAttribute("instance-id-provider")); } BeanDefinitionReaderUtils.registerBeanDefinition( new BeanDefinitionHolder(userTagsBuilder.getBeanDefinition(), element.getAttribute("user-tags-map")), parserContext.getRegistry()); } if (isRunningOnCloudEnvironment()) { ContextConfigurationUtils.registerInstanceDataPropertySource(parserContext.getRegistry(), element.getAttribute("value-separator"), element.getAttribute("attribute-separator")); } return null; }
@Override public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { Map<String, Object> annotationAttributes = importingClassMetadata.getAnnotationAttributes(EnableMuon.class.getName()); Object serviceNameCandidate = annotationAttributes.get("serviceName"); if (serviceNameCandidate != null && String.class == serviceNameCandidate.getClass()) { String serviceName = (String) serviceNameCandidate; BeanDefinitionBuilder definition = BeanDefinitionBuilder .genericBeanDefinition(AutoConfigurationFactoryBean.class); definition.addPropertyValue("serviceName", serviceName); definition.addPropertyValue("tags", annotationAttributes.get("tags")); BeanDefinitionReaderUtils.registerBeanDefinition( new BeanDefinitionHolder(definition.getBeanDefinition(), AUTO_CONFIGURATION_BEAN_NAME), registry); } }
@SuppressWarnings("unchecked") protected <T> T registerComponent(T bean, String name) { DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) ContextLoader.getCurrentWebApplicationContext() .getAutowireCapableBeanFactory(); Class<T> clazz = (Class<T>) bean.getClass(); String className = clazz.getCanonicalName(); BeanDefinition beanDefinition = null; try { beanDefinition = BeanDefinitionReaderUtils.createBeanDefinition(null, className, clazz.getClassLoader()); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } beanDefinition.setScope(BeanDefinition.SCOPE_SINGLETON); beanDefinition.setAutowireCandidate(true); beanFactory.registerBeanDefinition(name, beanDefinition); beanFactory.registerSingleton(name, bean); beanFactory.configureBean(bean, name); return bean; }
public BeanComponentDefinition registerBeanDefinition(BeanDefinitionBuilder builder, String id, String[] aliases, ParserContext parserContext) { BeanDefinitionHolder holder = new BeanDefinitionHolder(builder.getBeanDefinition(), id, aliases); BeanDefinitionReaderUtils .registerBeanDefinition(holder, parserContext.getRegistry()); BeanComponentDefinition componentDefinition = new BeanComponentDefinition(holder); parserContext.registerComponent(componentDefinition); return componentDefinition; }
public BeanComponentDefinition registerBeanDefinition(BeanDefinitionBuilder builder, Element element, ParserContext parserContext) { BeanDefinitionHolder holder = new BeanDefinitionHolder(builder.getBeanDefinition(), getId(element, builder, parserContext), parseAliase(element)); BeanDefinitionReaderUtils .registerBeanDefinition(holder, parserContext.getRegistry()); BeanComponentDefinition componentDefinition = new BeanComponentDefinition(holder); parserContext.registerComponent(componentDefinition); return componentDefinition; }
private void registerLepService(BeanDefinitionRegistry registry, AnnotationMetadata annotationMetadata, Map<String, Object> attributes) { // has a default, won't be null boolean primary = (Boolean) attributes.get("primary"); String className = annotationMetadata.getClassName(); BeanDefinitionBuilder definition = BeanDefinitionBuilder .genericBeanDefinition(LepServiceFactoryBean.class); definition.addPropertyValue("type", className); definition.addPropertyValue("annotationMetadata", annotationMetadata); definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE); AbstractBeanDefinition beanDefinition = definition.getBeanDefinition(); beanDefinition.setPrimary(primary); String name = getBeanName(annotationMetadata, attributes); String alias = name + LepService.class.getSimpleName(); String qualifier = getQualifier(attributes); if (StringUtils.hasText(qualifier)) { alias = qualifier; } BeanDefinitionHolder holder = new BeanDefinitionHolder(beanDefinition, name, new String[] {alias}); BeanDefinitionReaderUtils.registerBeanDefinition(holder, registry); }
protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(); Class<?> beanClass = getBeanClass(element); Assert.notNull(beanClass); if (beanClass != null) { builder.getRawBeanDefinition().setBeanClass(beanClass); } builder.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); builder.getRawBeanDefinition().setSource(parserContext.extractSource(element)); OsgiDefaultsDefinition defaults = resolveDefaults(element.getOwnerDocument(), parserContext); applyDefaults(parserContext, defaults, builder); doParse(element, parserContext, builder); AbstractBeanDefinition def = builder.getBeanDefinition(); // check whether the bean is mandatory (and if it is, make it top-level // bean) if (parserContext.isNested()) { String value = element.getAttribute(AbstractBeanDefinitionParser.ID_ATTRIBUTE); value = (StringUtils.hasText(value) ? value + BeanFactoryUtils.GENERATED_BEAN_NAME_SEPARATOR : ""); String generatedName = generateBeanName(value, def, parserContext); // make the bean lazy (since it is an inner bean initiallly) def.setLazyInit(true); // disable autowiring for promoted bean def.setAutowireCandidate(false); def.setAttribute(PROMOTED_REF, Boolean.TRUE); BeanDefinitionHolder holder = new BeanDefinitionHolder(def, generatedName); BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry()); return createBeanReferenceDefinition(generatedName, def); } return def; }
public void registerBean(Class<?> annotatedClass, String name, @SuppressWarnings("unchecked") Class<? extends Annotation>... qualifiers) { AnnotatedGenericBeanDefinition abd = new AnnotatedGenericBeanDefinition(annotatedClass); if (this.conditionEvaluator.shouldSkip(abd.getMetadata())) { return; } ScopeMetadata scopeMetadata = this.scopeMetadataResolver.resolveScopeMetadata(abd); abd.setScope(scopeMetadata.getScopeName()); String beanName = (name != null ? name : this.beanNameGenerator.generateBeanName(abd, this.registry)); AnnotationConfigUtils.processCommonDefinitionAnnotations(abd); if (qualifiers != null) { for (Class<? extends Annotation> qualifier : qualifiers) { if (Primary.class.equals(qualifier)) { abd.setPrimary(true); } else if (Lazy.class.equals(qualifier)) { abd.setLazyInit(true); } else { abd.addQualifier(new AutowireCandidateQualifier(qualifier)); } } } BeanDefinitionHolder definitionHolder = new BeanDefinitionHolder(abd, beanName); definitionHolder = AnnotationConfigUtils.applyScopedProxyMode(scopeMetadata, definitionHolder, this.registry); BeanDefinitionReaderUtils.registerBeanDefinition(definitionHolder, this.registry); }
private BeanDefinitionHolder parseNestedCustomElement(Element ele, BeanDefinition containingBd) { BeanDefinition innerDefinition = parseCustomElement(ele, containingBd); if (innerDefinition == null) { error("Incorrect usage of element '" + ele.getNodeName() + "' in a nested manner. " + "This tag cannot be used nested inside <property>.", ele); return null; } String id = ele.getNodeName() + BeanDefinitionReaderUtils.GENERATED_BEAN_NAME_SEPARATOR + ObjectUtils.getIdentityHexString(innerDefinition); if (logger.isDebugEnabled()) { logger.debug("Using generated bean name [" + id + "] for nested custom element '" + ele.getNodeName() + "'"); } return new BeanDefinitionHolder(innerDefinition, id); }
public BeanDefinition parse(Element element, ParserContext parserContext) { BeanDefinitionBuilder dwrController = BeanDefinitionBuilder.rootBeanDefinition(DwrController.class); List configurators = new ManagedList(); configurators.add(new RuntimeBeanReference(DEFAULT_SPRING_CONFIGURATOR_ID)); dwrController.addPropertyValue("configurators", configurators); String debug = element.getAttribute("debug"); if (StringUtils.hasText(debug)) { dwrController.addPropertyValue("debug", debug); } String beanName = element.getAttribute(BeanDefinitionParserDelegate.ID_ATTRIBUTE); String nameAttr = element.getAttribute(BeanDefinitionParserDelegate.NAME_ATTRIBUTE); String[] aliases = null; if (!StringUtils.hasText(beanName)) { beanName = element.getAttribute("name"); } else { String aliasName = element.getAttribute("name"); if (StringUtils.hasText(aliasName)) { aliases = StringUtils.tokenizeToStringArray(nameAttr, BeanDefinitionParserDelegate.BEAN_NAME_DELIMITERS); } } parseControllerParameters(dwrController, element); BeanDefinitionHolder holder = new BeanDefinitionHolder(dwrController.getBeanDefinition(), beanName, aliases); BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry()); return dwrController.getBeanDefinition(); }
@Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { System.out.println("------ register custom bean in BeanFactoryPostProcessor"); beanFactory.registerSingleton("createByBeanFactoryPostProcessor", new SimpleBeanInBeanFactoryPostProcessor()); if(beanFactory instanceof BeanDefinitionRegistry) { BeanDefinitionReaderUtils.registerBeanDefinition( new BeanDefinitionHolder(new AnnotatedGenericBeanDefinition(SimpleBeanWithDefinitionInBeanFactoryPostProcessor.class), "simpleBeanWithDefinitionInBeanFactoryPostProcessor"), (BeanDefinitionRegistry) beanFactory ); } }
protected void registerCreator(BeanDefinitionRegistry registry, BeanDefinitionBuilder creatorConfig, String javascript) { String creatorConfigName = "__" + javascript; BeanDefinitionHolder holder3 = new BeanDefinitionHolder(creatorConfig.getBeanDefinition(), creatorConfigName); BeanDefinitionReaderUtils.registerBeanDefinition(holder3, registry); lookupCreators(registry).put(javascript, new RuntimeBeanReference(creatorConfigName)); }
@Override public BeanDefinition parse(Element element, ParserContext parserContext) { AbstractBeanDefinition beanDefinition = new GenericBeanDefinition(); MutablePropertyValues propertyValues = new MutablePropertyValues(); beanDefinition.setBeanClass(SpringContextJobDriver.class); propertyValues.addPropertyValue("packagesToScan", element.getAttribute("packagesToScan")); beanDefinition.setPropertyValues(propertyValues); beanDefinition.setInitMethodName("init"); BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, parserContext.getRegistry()); return beanDefinition; }
public void registerBean(Class<?> annotatedClass, String name, @SuppressWarnings("unchecked") Class<? extends Annotation>... qualifiers) { AnnotatedGenericBeanDefinition abd = new AnnotatedGenericBeanDefinition(annotatedClass); if (this.conditionEvaluator.shouldSkip(abd.getMetadata())) { return; } ScopeMetadata scopeMetadata = this.scopeMetadataResolver.resolveScopeMetadata(abd); abd.setScope(scopeMetadata.getScopeName()); String beanName = (name != null ? name : this.beanNameGenerator.generateBeanName(abd, this.registry)); AnnotationConfigUtils.processCommonDefinitionAnnotations(abd); if (qualifiers != null) { for (Class<? extends Annotation> qualifier : qualifiers) { if (Primary.class == qualifier) { abd.setPrimary(true); } else if (Lazy.class == qualifier) { abd.setLazyInit(true); } else { abd.addQualifier(new AutowireCandidateQualifier(qualifier)); } } } BeanDefinitionHolder definitionHolder = new BeanDefinitionHolder(abd, beanName); definitionHolder = AnnotationConfigUtils.applyScopedProxyMode(scopeMetadata, definitionHolder, this.registry); BeanDefinitionReaderUtils.registerBeanDefinition(definitionHolder, this.registry); }
public static BeanDefinition registerComponent(ParserContext parserContext, BeanDefinitionBuilder builder, String id) { BeanDefinition definition = builder.getBeanDefinition(); if (!parserContext.isNested()) { String[] aliases = new String[0]; BeanDefinitionHolder holder = new BeanDefinitionHolder(definition, id, aliases); BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry()); BeanComponentDefinition componentDefinition = new BeanComponentDefinition(holder); parserContext.registerComponent(componentDefinition); } return definition; }
private BeanDefinition registerBean(Element element, ParserContext parserContext) { BeanDefinitionParserDelegate delegate = parserContext.getDelegate(); BeanDefinitionHolder holder = delegate .parseBeanDefinitionElement(element); BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry()); return holder.getBeanDefinition(); }
private void registerBean(BeanDefinitionRegistry registry, String name,Class<?> beanClass) { AnnotatedGenericBeanDefinition abd = new AnnotatedGenericBeanDefinition(beanClass); ScopeMetadata scopeMetadata = this.scopeMetadataResolver.resolveScopeMetadata(abd); abd.setScope(scopeMetadata.getScopeName()); // 可以自动生成name String beanName = (name != null ? name : this.beanNameGenerator.generateBeanName(abd, registry)); AnnotationConfigUtils.processCommonDefinitionAnnotations(abd); BeanDefinitionHolder definitionHolder = new BeanDefinitionHolder(abd,beanName); BeanDefinitionReaderUtils.registerBeanDefinition(definitionHolder,registry); }
public BeanDefinition parse(Element element, ParserContext parserContext) { if (!this.registered) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(RemotingAnnotationBeanPostProcessor.class); builder.getRawBeanDefinition().setSource(parserContext.extractSource(element)); BeanDefinitionReaderUtils.registerWithGeneratedName(builder.getBeanDefinition(), parserContext.getRegistry()); this.registered = true; } return null; }