spring-boot的自动配置原理
以下简单介绍springboot的自动配置原理:
springboot的自动配置指的是springboot会自动将一些配置类的bean注入IOC容器,在需要的时候引入相关的依赖,
使用@Autowired或@Resource等注解来使用它,其他配置不用管,springboot会自动注入。
核心注解为@SpringBootApplication,这是一个复合注解类,里面包含@SpringBootConfiguration和@EnableAutoConfiguration注解,
而@EnableAutoConfiguration也是一个复合注解,表示开启自动配置,里面有 @AutoConfigurationPackage和@Import(AutoConfigurationImportSelector.class)注解,
其中AutoConfigurationImportSelector类中有一个getCandidateConfigurations()方法,查找位于META-INF/spring.factories文件中的所有自动配置类
1).首先扫描,读取 META-INF/spring.factories
Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration,\
org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
2).定位到自动配置类
@Configuration 标记此类为配置类
@ConditionalOnClass()当类路径下有指定类的条件下
@ConditionalOnSingleCandidate()
@EnableConfigurationProperties() 关联一个配置属性类
@AutoConfigureAfter()
3).@ConfigurationProperties
自动配置类定位到配置属性类,因为配置属性有前缀,将外化配置转化为java类属性。