通过WebServerFactoryCustomizer进行WebServer的个性化配置

Notice: since spring-boot 2.0.0

Spring boot 使用嵌入式应用服务器时,如果希望对 WebServer 进行某些个性化配置,可以通过创建 WebServerFactoryCustomizer子类的 实例并注册为 Bean 的方式实现。

WebServerFactory 对象创建完毕后, WebServerFactoryCustomizerBeanPostProcessor 会从 BeanFactory 中查询所有 WebServerFactoryCustomizer 的Bean生成列表、排序,然后逐一调用 WebServerFactoryCustomizer 的 customize 方法。

以下是启动 NettyWebServer 时,通过 NettyWebServerFactoryCustomizer 进行个性化配置的示例。

@Bean
@ConditionalOnProperty(name = "spring.cloud.gateway.httpserver.wiretap")
public NettyWebServerFactoryCustomizer nettyServerWiretapCustomizer(
		Environment environment, ServerProperties serverProperties) {
          
   
	return new NettyWebServerFactoryCustomizer(environment, serverProperties) {
          
   
		@Override
		public void customize(NettyReactiveWebServerFactory factory) {
          
   
			factory.addServerCustomizers(httpServer -> httpServer.wiretap(true));
			super.customize(factory);
		}
	};
}
经验分享 程序员 微信小程序 职场和发展