2.自动配置的实现
刚刚我们整体的过了一下主配置文件是如何实现的,但我们还没深入的研究如何实现自动装配功能。我们回到这个文件下,找一个具体的自动配置类进行分析。
jar:file:/apache-maven-3.6.3-repository/org/springframework/boot/spring-boot-autoconfigure/2.2.6.RELEASE/spring-boot-autoconfigure-2.2.6.RELEASE.jar!/META-INF/spring.factories
在这里,我们用 HttpEncodingAutoConfiguration (Http编码自动配置) 作为例子吧
org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration,\
注释
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(HttpProperties.class)
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
@ConditionalOnClass(CharacterEncodingFilter.class)
@ConditionalOnProperty(prefix = "spring.http.encoding", value = "enabled", matchIfMissing = true)
public class HttpEncodingAutoConfiguration {
private final HttpProperties.Encoding properties;
public HttpEncodingAutoConfiguration(HttpProperties properties) {
this.properties = properties.getEncoding();
}
@Bean
@ConditionalOnMissingBean
public CharacterEncodingFilter characterEncodingFilter() {
CharacterEncodingFilter filter = new OrderedCharacterEncodingFilter();
filter.setEncoding(this.properties.getCharset().name(

本文深入解析SpringBoot自动配置的实现,以HttpEncodingAutoConfiguration为例,分析条件判断、组件获取、配置文件读取等步骤,揭示自动配置的工作原理。通过@Conditional注解控制配置类生效,使用@ConfigurationProperties绑定配置文件,动态创建和配置组件。
最低0.47元/天 解锁文章
6971





