以HttpEncodingAutoConfiguration为例,解析自动配置原理
//这是一个配置文件
@Configuration(proxyBeanMethods = false)
//启动指定的类,将配置文件中对应的值和ServerProperties对应起来
@EnableConfigurationProperties(ServerProperties.class)
//Spring 底层有个Conditional注解, 判断当前是否是web应用,如果是,则当前配置生效
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
//是否是字符过滤器类,如果是的话生效
@ConditionalOnClass(CharacterEncodingFilter.class)
//判断配置文件中是否存在指定的配置,matchIfMissing:即便找不到这项也返回true
@ConditionalOnProperty(prefix = "server.servlet.encoding", value = "enabled", matchIfMissing = true)
public class HttpEncodingAutoConfiguration {
@Bean 给容器添加组件:CharacterEncodingFilter
@Bean给容器中添加组件:localeCharsetMappingsCustomizer