SpringBoot 2.0+ WebServerFactoryCustomizer修改默认servlet容器

springBoot 2.0+ WebServerFactoryCustomizer

可以通过这种方式来去修改我们的默认 servlet 容器的配置

1、不同版本间的差异

//SpringBoot1.5.x
@Bean
public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer(){
          
   
    return new EmbeddedServletContainerCustomizer() {
          
   
        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) {
          
   
            container.setPort(8090);
        }
    };
}
 
//SpringBoot2.x.x
@Bean
public WebServerFactoryCustomizer webServerFactoryCustomizer(){
          
   
    return new WebServerFactoryCustomizer<ConfigurableServletWebServerFactory>() {
          
   
        @Override
        public void customize(ConfigurableServletWebServerFactory factory) {
          
   
        factory.setPort(8090);
    }
};

2、底层原理

随便进入一个我们常见的 servlet的相关配置中可以发现,里面有我们的配置文件,还将值对应到其配置文件中了。这不跟我们配置文件的底层写法一样么,只不过换了种方式。

3. 总结

首先其通过不同的 xxxCustomizer 来区分原配置类 ServerProperties 中的各种属性(原来通过对象的形式)。然后这些 xxxCustomizer 调用 xxxWebServerFactory 的相应方法来去注入到配置类中,从而修改我们的默认配置。

经验分享 程序员 微信小程序 职场和发展