1.以HttpEncodingAutoConfiguration自动配置类为例
2.里面含有
@Configuration //表示这是一个配置类,以前编写的配置文件一样,也可以给容器中添加组件
@EnableConfigurationProperties(HttpEncodingProperties.class) //启动指定类的ConfigurationProperties功能;将配置文件中对应的值和HttpEncodingProperties绑定起来;并把HttpEncodingProperties加入到ioc容器中
@ConditionalOnWebApplication Spring底层@Conditional注解(Spring注解版),根据不同的条件,如果满足指定的条件,整个配置类里面的配置就会生效; 判断当前应用是否是web应用,如果是,当前配置类生效
@ConditionalOnClass(CharacterEncodingFilter.class) 判断当前项目有没有这个类CharacterEncodingFilter;SpringMVC中进行乱码解决的过滤器;
@ConditionalOnProperty(prefix = "spring.http.encoding", value = "enabled", matchIfMissing = true) //判断配置文件中是否存在某个配置 spring.http.encoding.enabled;如果不存在,判断也是成立的
//即使我们配置文件中不配置pring.http.encoding.enabled=true,也是默认生效的;
如果这个自动配置类生效那么我们就可以用你们的@bean添加好的组件,这些组件的属性值是从对应的properties类中获取的,这些类里面的每一个属性又是和配置文件绑定的;
总的就是:一个自动配置类生效后,可以用里面添加的各种组件,组件的属性值,都是从*properties类里的属性获取。因为@EnableConfigurationProperties这个组件给properties类的值绑定起来了。所以,我们也可以更改这里面的属性的值,在配置文件中