SpringBoot工作原理

SpringBoot工作原理

思考一个问题:

  • 为什么加载了redis的starter(起步依赖)之后,RedisTemplate对象会自动被new出来,并可以@Autowired了呢?

自动装配

观察@EnableAutoConfiguration 注解内部使用 @Import(AutoConfigurationImportSelector.class)

读取META-INF/spring.factories,该配置文件中定义了大量的配置类,当 SpringBoot 应用启动时,会自动加载这些配置类,初始化Bean

 

 

装配Redis

并不是读取META-INF/spring.factories所有的Bean都会被初始化,在配置类中使用@Condition来加载满足条件的Bean

  • ConditionalOnClass:判断环境中是否有对应字节码文件才初始化Bean

  • ConditionalOnProperty:判断配置文件中是否有对应属性和值才初始化Bean

  • ConditionalOnMissingBean:判断环境中没有对应Bean才初始化Bean

  •  

     

 

posted @ 2022-01-23 20:42  进击的小蔡鸟  阅读(128)  评论(0编辑  收藏  举报