【SpringBoot】SpringBoot 配置这一篇文章就够了 (4)

每一个这样的xxxAutoCnfiguration类都是容器中的一个组件,都加入到容器中,用他们来做自动配置

3)、每一个自动配置类进行自动配置功能 4) 以HttpEncodingAutoConfiguration为例来解释自动配置与案例 @Configuration( //表示这是一个配置类 可以给容器中添加组件 proxyBeanMethods = false ) @EnableConfigurationProperties({ServerProperties.class}) //启用指定类ConfigurationProperties功能 将配置文件中对应的值和ConfigurationProperties绑定起来 @ConditionalOnWebApplication( type = Type.SERVLET ) @ConditionalOnClass({CharacterEncodingFilter.class})//根据不同的条件,如果满足指定的条件整改配置类里面的配置就会生效 判断当前项目有没有CharacterEncodingFilter.class这个类 @ConditionalOnProperty( prefix = "server.servlet.encoding", value = {"enabled"}, matchIfMissing = true )//判断配置文件中是否存在某个配置 server.servlet.encoding.enable=true如果不存在也是生效的 public class HttpEncodingAutoConfiguration { private final Encoding properties; //只有一个有参构造器的情况下,参数的值会从容器中拿 public HttpEncodingAutoConfiguration(ServerProperties properties) { this.properties = properties.getServlet().getEncoding(); } @Bean//给容器中添加组件 这个组件的某些值 需要从Properties中获取 @ConditionalOnMissingBean public CharacterEncodingFilter characterEncodingFilter() { CharacterEncodingFilter filter = new OrderedCharacterEncodingFilter(); filter.setEncoding(this.properties.getCharset().name()); filter.setForceRequestEncoding(this.properties.shouldForce(org.springframework.boot.web.servlet.server.Encoding.Type.REQUEST)); filter.setForceResponseEncoding(this.properties.shouldForce(org.springframework.boot.web.servlet.server.Encoding.Type.RESPONSE)); return filter; }

根据当前不同的条件判断,决定这个配置是否生效?

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyypjj.html