MetadataReader metadataReader = getMetadataReaderFactory().getMetadataReader(type); if (isCandidateComponent(metadataReader)) { AnnotatedGenericBeanDefinition sbd = new AnnotatedGenericBeanDefinition( metadataReader.getAnnotationMetadata()); if (isCandidateComponent(sbd)) {
@Nullable Class<? extends Annotation>[] qualifiers, BeanDefinitionCustomizer... definitionCustomizers) { AnnotatedGenericBeanDefinition abd = new AnnotatedGenericBeanDefinition(annotatedClass); if (this.conditionEvaluator.shouldSkip(abd.getMetadata())) { return; abd.setInstanceSupplier(instanceSupplier); ScopeMetadata scopeMetadata = this.scopeMetadataResolver.resolveScopeMetadata(abd); abd.setScope(scopeMetadata.getScopeName()); String beanName = (name != null ? name : this.beanNameGenerator.generateBeanName(abd, this.registry)); for (Class<? extends Annotation> qualifier : qualifiers) { if (Primary.class == qualifier) { abd.setPrimary(true); abd.setLazyInit(true); abd.addQualifier(new AutowireCandidateQualifier(qualifier));
/** * Create a new AnnotatedGenericBeanDefinition for the given annotation metadata, * allowing for ASM-based processing and avoidance of early loading of the bean class. * Note that this constructor is functionally equivalent to * {@link org.springframework.context.annotation.ScannedGenericBeanDefinition * ScannedGenericBeanDefinition}, however the semantics of the latter indicate that a * bean was discovered specifically via component-scanning as opposed to other means. * @param metadata the annotation metadata for the bean class in question * @since 3.1.1 */ public AnnotatedGenericBeanDefinition(AnnotationMetadata metadata) { Assert.notNull(metadata, "AnnotationMetadata must not be null"); if (metadata instanceof StandardAnnotationMetadata) { setBeanClass(((StandardAnnotationMetadata) metadata).getIntrospectedClass()); } else { setBeanClassName(metadata.getClassName()); } this.metadata = metadata; }
/** * Register the {@link Configuration} class itself as a bean definition. */ private void registerBeanDefinitionForImportedConfigurationClass(ConfigurationClass configClass) { AnnotationMetadata metadata = configClass.getMetadata(); AnnotatedGenericBeanDefinition configBeanDef = new AnnotatedGenericBeanDefinition(metadata); ScopeMetadata scopeMetadata = scopeMetadataResolver.resolveScopeMetadata(configBeanDef); configBeanDef.setScope(scopeMetadata.getScopeName()); String configBeanName = this.importBeanNameGenerator.generateBeanName(configBeanDef, this.registry); AnnotationConfigUtils.processCommonDefinitionAnnotations(configBeanDef, metadata); BeanDefinitionHolder definitionHolder = new BeanDefinitionHolder(configBeanDef, configBeanName); definitionHolder = AnnotationConfigUtils.applyScopedProxyMode(scopeMetadata, definitionHolder, this.registry); this.registry.registerBeanDefinition(definitionHolder.getBeanName(), definitionHolder.getBeanDefinition()); configClass.setBeanName(configBeanName); if (logger.isTraceEnabled()) { logger.trace("Registered bean definition for imported class '" + configBeanName + "'"); } }
@Override void configure(String name, SpringInjector builder, DefaultListableBeanFactory factory) { String id = Tools.nextUUID(); AnnotatedGenericBeanDefinition def = new AnnotatedGenericBeanDefinition(providerType); def.setScope("singleton"); factory.registerBeanDefinition(id, def); AnnotatedGenericBeanDefinition definition = new AnnotatedGenericBeanDefinition(type); definition.setScope(scope.name().toLowerCase()); definition.setScope(scopeMD.getScopeName()); definition.addQualifier(qualifier); definition.addQualifier(qualifier); definition.setFactoryBeanName(id); definition.setFactoryMethodName("get");
@Override void configure(String name, SpringInjector builder, DefaultListableBeanFactory factory) { AnnotatedGenericBeanDefinition definition = new AnnotatedGenericBeanDefinition(type); definition.setScope("singleton"); if (qualifiers != null) { for (AutowireCandidateQualifier qualifier : qualifiers) { definition.addQualifier(qualifier); } } factory.registerBeanDefinition(name, definition); // Register instance builder.instances.put(name, instance); } }
private void registerOn(Class<?> type, boolean customComponent) { AnnotatedGenericBeanDefinition definition = new AnnotatedGenericBeanDefinition(type); if (!customComponent) { definition.setLazyInit(true); } definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_NO); definition.setPrimary(customComponent); definition.setRole(customComponent ? BeanDefinition.ROLE_APPLICATION : BeanDefinition.ROLE_INFRASTRUCTURE); String name = beanNameGenerator.generateBeanName(definition, (BeanDefinitionRegistry) beanFactory); BeanDefinitionHolder definitionHolder = new BeanDefinitionHolder(definition, name); ScopeMetadata scopeMetadata = scopeResolver.resolveScopeMetadata(definition); definitionHolder = applyScopeOn(definitionHolder, scopeMetadata); BeanDefinitionReaderUtils.registerBeanDefinition(definitionHolder, (BeanDefinitionRegistry) beanFactory); }
@Override public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { AnnotatedGenericBeanDefinition beanDefinition = new AnnotatedGenericBeanDefinition(EmbeddedService.class); beanDefinition.getPropertyValues().add("id", "embedded_id_001"); registry.registerBeanDefinition("beanFromSimpleRegistrar", beanDefinition); } }
/** * Create a new AnnotatedGenericBeanDefinition for the given bean class. * @param beanClass the loaded bean class */ public AnnotatedGenericBeanDefinition(Class<?> beanClass) { setBeanClass(beanClass); this.metadata = new StandardAnnotationMetadata(beanClass, true); }
/** * Create a new AnnotatedGenericBeanDefinition for the given annotation metadata, * based on an annotated class and a factory method on that class. * @param metadata the annotation metadata for the bean class in question * @param factoryMethodMetadata metadata for the selected factory method * @since 4.1.1 */ public AnnotatedGenericBeanDefinition(AnnotationMetadata metadata, MethodMetadata factoryMethodMetadata) { this(metadata); Assert.notNull(factoryMethodMetadata, "MethodMetadata must not be null"); setFactoryMethodName(factoryMethodMetadata.getMethodName()); this.factoryMethodMetadata = factoryMethodMetadata; }
/** * Create a new AnnotatedGenericBeanDefinition for the given annotation metadata, * allowing for ASM-based processing and avoidance of early loading of the bean class. * Note that this constructor is functionally equivalent to * {@link org.springframework.context.annotation.ScannedGenericBeanDefinition * ScannedGenericBeanDefinition}, however the semantics of the latter indicate that * a bean was discovered specifically via component-scanning as opposed to other * means. * @param metadata the annotation metadata for the bean class in question * @since 3.1.1 */ public AnnotatedGenericBeanDefinition(AnnotationMetadata metadata) { Assert.notNull(metadata, "AnnotationMetadata must not be null"); setBeanClassName(metadata.getClassName()); this.metadata = metadata; }
@Override void configure(String name, SpringInjector builder, DefaultListableBeanFactory factory) { String id = Tools.nextUUID(); AnnotatedGenericBeanDefinition def = new AnnotatedGenericBeanDefinition(providerType); def.setScope("singleton"); factory.registerBeanDefinition(id, def); AnnotatedGenericBeanDefinition definition = new AnnotatedGenericBeanDefinition(type); definition.setScope(scope.name().toLowerCase()); definition.setScope(scopeMD.getScopeName()); definition.addQualifier(qualifier); definition.addQualifier(qualifier); definition.setFactoryBeanName(id); definition.setFactoryMethodName("get");
@Override void configure(String name, SpringInjector builder, DefaultListableBeanFactory factory) { AnnotatedGenericBeanDefinition definition = new AnnotatedGenericBeanDefinition(type); definition.setScope("singleton"); if (qualifiers != null) { for (AutowireCandidateQualifier qualifier : qualifiers) { definition.addQualifier(qualifier); } } factory.registerBeanDefinition(name, definition); // Register instance builder.instances.put(name, instance); } }
/** * Register the {@link Configuration} class itself as a bean definition. */ private void registerBeanDefinitionForImportedConfigurationClass(ConfigurationClass configClass) { AnnotationMetadata metadata = configClass.getMetadata(); AnnotatedGenericBeanDefinition configBeanDef = new AnnotatedGenericBeanDefinition(metadata); ScopeMetadata scopeMetadata = scopeMetadataResolver.resolveScopeMetadata(configBeanDef); configBeanDef.setScope(scopeMetadata.getScopeName()); String configBeanName = this.importBeanNameGenerator.generateBeanName(configBeanDef, this.registry); AnnotationConfigUtils.processCommonDefinitionAnnotations(configBeanDef, metadata); BeanDefinitionHolder definitionHolder = new BeanDefinitionHolder(configBeanDef, configBeanName); definitionHolder = AnnotationConfigUtils.applyScopedProxyMode(scopeMetadata, definitionHolder, this.registry); this.registry.registerBeanDefinition(definitionHolder.getBeanName(), definitionHolder.getBeanDefinition()); configClass.setBeanName(configBeanName); if (logger.isTraceEnabled()) { logger.trace("Registered bean definition for imported class '" + configBeanName + "'"); } }
/** * Create a new AnnotatedGenericBeanDefinition for the given bean class. * @param beanClass the loaded bean class */ public AnnotatedGenericBeanDefinition(Class<?> beanClass) { setBeanClass(beanClass); this.metadata = new StandardAnnotationMetadata(beanClass, true); }
/** * Create a new AnnotatedGenericBeanDefinition for the given annotation metadata, * based on an annotated class and a factory method on that class. * @param metadata the annotation metadata for the bean class in question * @param factoryMethodMetadata metadata for the selected factory method * @since 4.1.1 */ public AnnotatedGenericBeanDefinition(AnnotationMetadata metadata, MethodMetadata factoryMethodMetadata) { this(metadata); Assert.notNull(factoryMethodMetadata, "MethodMetadata must not be null"); setFactoryMethodName(factoryMethodMetadata.getMethodName()); this.factoryMethodMetadata = factoryMethodMetadata; }
MetadataReader metadataReader = getMetadataReaderFactory().getMetadataReader(type); if (isCandidateComponent(metadataReader)) { AnnotatedGenericBeanDefinition sbd = new AnnotatedGenericBeanDefinition( metadataReader.getAnnotationMetadata()); if (isCandidateComponent(sbd)) {
@Nullable Class<? extends Annotation>[] qualifiers, BeanDefinitionCustomizer... definitionCustomizers) { AnnotatedGenericBeanDefinition abd = new AnnotatedGenericBeanDefinition(annotatedClass); if (this.conditionEvaluator.shouldSkip(abd.getMetadata())) { return; abd.setInstanceSupplier(instanceSupplier); ScopeMetadata scopeMetadata = this.scopeMetadataResolver.resolveScopeMetadata(abd); abd.setScope(scopeMetadata.getScopeName()); String beanName = (name != null ? name : this.beanNameGenerator.generateBeanName(abd, this.registry)); for (Class<? extends Annotation> qualifier : qualifiers) { if (Primary.class == qualifier) { abd.setPrimary(true); abd.setLazyInit(true); abd.addQualifier(new AutowireCandidateQualifier(qualifier));
@Override void configure(String name, SpringInjector builder, DefaultListableBeanFactory factory) { String id = Tools.nextUUID(); AnnotatedGenericBeanDefinition def = new AnnotatedGenericBeanDefinition(provider.getClass()); def.setScope("singleton"); factory.registerBeanDefinition(id, def); builder.instances.put(id, provider); AnnotatedGenericBeanDefinition definition = new AnnotatedGenericBeanDefinition(type); definition.setScope(scope.name().toLowerCase()); definition.setScope(scopeMD.getScopeName()); definition.addQualifier(qualifier); definition.addQualifier(qualifier); definition.setFactoryBeanName(id); definition.setFactoryMethodName("get");
@Override void configure(String name, SpringInjector builder, DefaultListableBeanFactory factory) { AnnotatedGenericBeanDefinition definition = new AnnotatedGenericBeanDefinition(type); // if (scope != null) { definition.setScope(scope.name().toLowerCase()); } else { ScopeMetadata scopeMD = builder.scopeResolver.resolveScopeMetadata(definition); if (scopeMD != null) { definition.setScope(scopeMD.getScopeName()); } } // if (qualifiers != null) { for (AutowireCandidateQualifier qualifier : qualifiers) { definition.addQualifier(qualifier); } } // factory.registerBeanDefinition(name, definition); } }