SpringBoot 自动配置主要通过
@EnableAutoConfiguration,@Conditional,@EnableConfigurationProperties或者@ConfigurationProperties等几个注解来进行自动配置完成的。
@EnableAutoConfiguration开启自动配置,主要作用就是调用Spring-Core包里的loadFactoryNames(),将autoconfig包里的已经写好的自动配置加载进来。
@Conditional条件注解,通过判断类路径下有没有相应配置的jar包来确定是否加载和自动配置这个类。
@EnableConfigurationProperties的作用就是,给自动配置提供具体的配置参数,只需要写在application.properties中,就可以通过映射写入配置类的POJO属性中。
@EnableAutoConfiguration
@Enable*注释并不是SpringBoot新发明的注释,Spring 3框架就引入了这些注释,用这些注释替代XML配置文件。比如:
@EnableTransactionManagement注释,它能够声明事务管理
@EnableWebMvc注释,它能启用Spring MVC
@EnableScheduling注释,它可以初始化一个调度器。
这些注释事实上都是简单的配置,通过@Import注释导入。
从启动类的@SpringBootApplication进入,在里面找到了@EnableAutoConfiguration,


@EnableAutoConfiguration里通过@Import导入了EnableAutoConfigurationImportSelector,

进入他的父类AutoConfigurationImportSelector

找到selectImports()方法,他调用了getCandidateConfigurations()方法,在这里,这个方法又调用了Spring Core包中的loadFactoryNames()方法。这个方法的作用是,会查询META-INF/spring.factories文件中包含的JAR文件。

当找到spring.factories文件后,SpringFactoriesLoader将查询配置文件命名的属性。



最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



