通过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);
}
};
}