使用springboot2.0之后,如何通过编码自定义servlet容器参数,使用如下代码
@Bean
public WebServerFactoryCustomizer<ConfigurableWebServerFactory> embeddedServletContainerCustomizer() {
return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
@Override
public void customize(ConfigurableWebServerFactory factory) {
factory.setPort(8081);
}
};
}
那么这个配置是何时且如何被调用的呢,请看WebServerFactoryCustomizerBeanPostProcessor,该类实现BeanPostProcessor, BeanFactoryAware,在实现方法中调用WebServerFactoryCustomizer类的customize方法
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof WebServerFactory) {
postProcessBeforeInitialization((WebServerFactory) bean);
}
return bean;
}
@SuppressWarnings("unchecked")
private void postProcessBeforeInitialization(WebServerFactory webServerFactory) {
LambdaSafe.callbacks(WebServerFactoryCustomizer.class, getCustomizers(), webServerFactory)
.withLogger(WebServerFactoryCustomizerBeanPostProcessor.class)
.invoke((customizer) -> customizer.customize(webServerFactory));
}

本文介绍在SpringBoot2.0中如何通过编码配置Servlet容器属性,核心涉及WebServerFactoryCustomizerBeanPostProcessor类,它实现了BeanPostProcessor、BeanFactoryAware接口,并在相关方法中调用WebServerFactoryCustomizer的customize方法来定制配置。
303

被折叠的 条评论
为什么被折叠?



