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。今天,我给大家分享一下我的理解。
149 0
|
Java Spring 容器
【Spring Boot自动装配】
【Spring Boot自动装配】
|
NoSQL Java Redis
springboot自动装配
springboot自动装配
91 0
|
2月前
|
消息中间件 Java 数据库
解密Spring Boot:深入理解条件装配与条件注解
Spring Boot中的条件装配与条件注解提供了强大的工具,使得应用程序可以根据不同的条件动态装配Bean,从而实现灵活的配置和管理。通过合理使用这些条件注解,开发者可以根据实际需求动态调整应用的行为,提升代码的可维护性和可扩展性。希望本文能够帮助你深入理解Spring Boot中的条件装配与条件注解,在实际开发中更好地应用这些功能。
40 2
|
7月前
|
Java Spring 容器
在 Spring Boot 中,条件装配(Conditional Configuration)和条件注解(Conditional Annotations)
在 Spring Boot 中,条件装配(Conditional Configuration)和条件注解(Conditional Annotations)
140 1
|
8月前
|
Java Maven Spring
【Spring Boot自动装配原理详解与常见面试题】—— 每天一点小知识(下)
【Spring Boot自动装配原理详解与常见面试题】—— 每天一点小知识(下)
314 0
|
8月前
|
Java Redis 开发者
【Spring Boot自动装配原理详解与常见面试题】—— 每天一点小知识(上)
【Spring Boot自动装配原理详解与常见面试题】—— 每天一点小知识
258 0
|
8月前
|
XML Java 数据库
【SpringBoot:详解Bean装配】
【SpringBoot:详解Bean装配】
【java常见的面试题】讲一讲SpringBoot自动装配的原理
Java基础的面试题【SpringBoot&SpringCloud篇】
119 0
|
8月前
|
Java
SpringBoot之@Conditional衍生条件装配详解
SpringBoot之@Conditional衍生条件装配详解
116 0