Spring源码-06-BeanDefinition

Spring源码-06-BeanDefinition

Bean定义信息

RootBeanDefinition def = new RootBeanDefinition(ConfigurationClassPostProcessor.class);
def.setSource(source);
beanDefs.add(registerPostProcessor(registry, def, CONFIGURATION_ANNOTATION_PROCESSOR_BEAN_NAME));
AnnotatedGenericBeanDefinition abd = new AnnotatedGenericBeanDefinition(beanClass); // 封装BeanDefinition
if (this.conditionEvaluator.shouldSkip(abd.getMetadata())) {
   return;
}

abd.setInstanceSupplier(supplier);
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));
      }
   }
}
posted @   Bannirui  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示