springboot自动配置个人理解

如若理解有误,请大家指正。

问题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

你可能感兴趣的:(java,spring,boot,spring,java)