如若理解有误,请大家指正。
问题1:springboot如何做到自动配置的
答:springboot会根据注解@EnableAutoConfiguration来加载springboot-boot-autoconfigure jar包下的spring.factories文件,然后扫描其中的配置,自动注入该项目所需要的配置。
问题2:那么springboot如何知道那些配置是需要的?那些配置是不需要的?
答:springboot会在启动的时候会扫描该项目中所有jar包下的META-INF / spring.factories 文件,然后和上述的spring.factories文件做对比,得出我们该项目需要导入的配置。
问题3:那么我们在springboot中的application.properties文件的配置如何如何自动注入到项目中去的
答:springboot在启动的时候会自动加载application.properties到容器中。
eg: 以WebMvcAutoConfigurationAdapter为例(看下面相关代码),当spring.factories文件中有spring.mvc相关配置,会自动的注入到该类中去(否则用默认值),然后该实例被注入答容器中去。
// Defined as a nested config to ensure WebMvcConfigurer is not read when not
// on the classpath
@Configuration(proxyBeanMethods = false)
@Import(EnableWebMvcConfiguration.class)
@EnableConfigurationProperties({ WebMvcProperties.class, ResourceProperties.class })
@Order(0)
public static class WebMvcAutoConfigurationAdapter implements WebMvcConfigurer {
...
}
========================================================================================
@ConfigurationProperties(prefix = "spring.mvc")
public class WebMvcProperties {
...
}
参考:SpringBoot-starter的原理: https://blog.csdn.net/songzehao/article/details/100837463