独立Tomcat允许您通过allowTrace
属性启用TRACE HTTP方法:
allowTrace - 一个
boolean
值,可用于启用或禁用TRACE HTTP方法。如果未指定,则此属性设置为false
。
如果我必须使用嵌入式Tomcat为Spring Boot项目做同样的事情 - 我可以使用哪种配置/属性设置?
我已经找到了Spring Boot for Tomcat服务器支持的属性:
但似乎没有列出。有任何想法如何实现这一目标。
您可以通过编程方式配置Connector.allowTrace
属性。在这种情况下,您必须为类EmbeddedServletContainerFactory
定义bean并通过调用TomcatEmbeddedServletContainerFactory.addConnectorCustomizers(...)
方法添加连接器定制器。它允许您访问Connector
对象并调用您需要的任何配置方法。在这种情况下,我们只需调用connector.setAllowTrace(true)
:
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class TomcatConfiguration {
@Bean
public EmbeddedServletContainerFactory embeddedServletContainerFactory() {
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
factory.addConnectorCustomizers(connector -> {
connector.setAllowTrace(true);
});
return factory;
}
}
您可以在单独的配置类中配置此bean(如上例所示),或者只需将此bean方法添加到主Spring Boot应用程序类中。
server.tomcat.*
like property?在这一刻 - 不。当前的Spring Boot版本(1.5.9-RELEASE
)不允许使用简单属性进行设置。带有server.tomcat
前缀的所有属性都会自动映射到类org.springframework.boot.autoconfigure.web.ServerProperties.Tomcat
。如果你看看它的javadocs(或你的IDE中的源代码),你会发现没有像setAllowTrace(boolean value)
这样的方法。
上面的解决方案仅适用于Spring Boot 1.对于Spring Boot 2,以下工作方式:
@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> tomcatCustomizer() {
return customizer -> customizer.addConnectorCustomizers(connector -> {
connector.setAllowTrace(true);
});
}
如果要在管理端口上应用if,则需要创建如下所示的配置类:
@ManagementContextConfiguration
public class ManagementInterfaceConfiguration {
@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> tomcatCustomizer() {
return customizer -> customizer.addConnectorCustomizers(connector -> {
connector.setAllowTrace(true);
});
}
}
和META-INF/spring.factories
中的一个资源(在类路径上)来获取它:
org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration=\
com.package.ManagementInterfaceConfiguration