springboot 装配

简介: springboot装配

重点方法:

 invokeBeanFactoryPostProcessors(beanFactory)

1.registryProcessor.postProcessBeanDefinitionRegistry(registry) # 执行各种BeanFactoryPostProcessors,其中就有 ConfigurationClassPostProcessor

  1. 获取含有@ConfigurationConfiguration注解的类ClassUtils.checkConfigurationClassCandidate(beanDef, this.metadataReaderFactory)

--> Map, Object> config = metadata.getAnnotationAttributes(Configuration.class.getName())

-->configCandidates.add(new BeanDefinitionHolder(beanDef, beanName))

  1. 处理 (ConfigurationClassParser)parser.parse(candidates)

-->parse(((AnnotatedBeanDefinition) bd).getMetadata(), holder.getBeanName())

-->processConfigurationClass(new ConfigurationClass(metadata, beanName), DEFAULT_EXCLUSION_FILTER)

-->doProcessConfigurationClass(configClass, sourceClass, filter)

  1. processPropertySource(propertySource)-->Process any @PropertySource annotations

Set<BeanDefinitionHolder> scannedBeanDefinitions =

     this.componentScanParser.parse(componentScan, sourceClass.getMetadata().getClassName())-->Process any @ComponentScan annotations

processImports(configClass, sourceClass, getImports(sourceClass), filter, true) -->Process any @Import annotations

this.environment.resolveRequiredPlaceholders(resource)-->Process any @ImportResource annotations

  1. 在处理@Import注解时

this.deferredImportSelectorHandler.handle(configClass, (DeferredImportSelector) selector) -->Candidate class is an ImportSelector -> delegate to it to determine imports

ParserStrategyUtils.instantiateClass(candidateClass, ImportBeanDefinitionRegistrar.class,
     this.environment, this.resourceLoader, this.registry)-->Candidate class is an ImportBeanDefinitionRegistrar , delegate to it to register additional bean definitions

this.importStack.registerImport(

     currentSourceClass.getMetadata(), candidate.getMetadata().getClassName());
processConfigurationClass(candidate.asConfigClass(configClass), exclusionFilter)-->process it as an @Configuration class

相关文章
|
XML Java Maven
Spring Boot自动装配原理
昨天,有位在广州工作4年的小伙伴,在面试中被问到SpringBoot自动装配原理,当时,自我感觉比较好,他要的是30K,但是都没有拿到Offer。今天,我给大家分享一下我的理解。
140 0
|
Java Spring 容器
【Spring Boot自动装配】
【Spring Boot自动装配】
|
NoSQL Java Redis
springboot自动装配
springboot自动装配
85 0
|
6月前
|
Java Spring 容器
在 Spring Boot 中,条件装配(Conditional Configuration)和条件注解(Conditional Annotations)
在 Spring Boot 中,条件装配(Conditional Configuration)和条件注解(Conditional Annotations)
105 1
|
7月前
|
Java Maven Spring
【Spring Boot自动装配原理详解与常见面试题】—— 每天一点小知识(下)
【Spring Boot自动装配原理详解与常见面试题】—— 每天一点小知识(下)
288 0
|
7月前
|
Java Redis 开发者
【Spring Boot自动装配原理详解与常见面试题】—— 每天一点小知识(上)
【Spring Boot自动装配原理详解与常见面试题】—— 每天一点小知识
242 0
|
7月前
|
XML Java 数据库
【SpringBoot:详解Bean装配】
【SpringBoot:详解Bean装配】
|
7月前
|
Java
SpringBoot之@Conditional衍生条件装配详解
SpringBoot之@Conditional衍生条件装配详解
100 0
【java常见的面试题】讲一讲SpringBoot自动装配的原理
Java基础的面试题【SpringBoot&SpringCloud篇】
113 0
|
7月前
|
XML Java API
Springboot的自动装配解读
Spring Framework本身有一个IOC容器,该容器会统一管理其中的Bean对象,Bean对象可以理解为组件,要理解组件装配,首先要理解组件的概念。

热门文章

最新文章

下一篇
无影云桌面