在传统的web.xml类型配置中,您可以像这样配置上下文参数
web.xml
...
<context-param>
<param-name>p-name</param-name>
<param-value>-value</param-value>
</context-param>
...
这是如何在Spring启动中实现的。我有一个需要参数的过滤器。
我使用的是@EnableAutoConfiguration
,并包含了
从Spring Boot 2.0.0开始,他们更新了添加上下文参数的方式:
server.servlet.context-parameters.yourProperty.
您可以在此链接上查看更多更新
您实际上可以使用Java配置来实现这一点。如果您的过滤器需要一些参数,只需将它们放在您的application.yml(或. properties)中,在配置类中使用@Value
注入它们,并将它们注册到FilterRegister strationBean
中。
例如:
@Value("${myFilterParam}")
private String myFilterParam;
@Bean(name="myFilter")
public FilterRegistrationBean myFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new MyFilter());
filterRegistrationBean.setInitParameters(Collections.singletonMap("p-name", "p-value"));
return filterRegistrationBean;
}
还有< code > FilterRegistrationBean 的JavaDoc:
http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/context/embedded/FilterRegistrationBean.html
使现代化
您可以在< code > SpringBootServletInitializer # onStartup()方法中注册servlet上下文的参数。您的应用程序类可以扩展< code > SpringBootServletInitializer ,并且您可以覆盖< code>onStartup方法并在那里设置参数。示例:
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.setInitParameter("p-name", "p-value");
super.onStartup(servletContext);
}
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}
另一种选择是按照Andy Wilkinson的建议定义ServletContextLaunalizer
bean。
您可以通过声明一个ServletContextPresalizer
bean来设置整个ServletContext
的参数:
@Bean
public ServletContextInitializer initializer() {
return new ServletContextInitializer() {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.setInitParameter("p-name", "-value");
}
};
}
更新:在Spring Boot 1.2中,不再需要使用ServletContextLaunalizer
。您现在可以在application.properties
中的一行中配置ServletContext
上的参数:
server.context_parameters.p-name=-value
我将application.properties中的contextPath设置为server.contextPath=/mywebapp,在带有spring security的spring boot application中,默认url设置为/login it,而不是将上下文路径设置为/mywebapp,并将我重定向为/login而不是/mywebapp/login。如何用spring secur
我使用Spring Boot 2.1.2. RELEASE编写联调,无法设置所需的上下文路径。它总是等于空字符串(用servletContext.getContextPath()获得)。 application-test.properties: 测试配置: 呼叫代码: 应用测试中的其他属性。按预期注入属性。上下文路径通常在我运行服务器时设置。我试图以@SpringBootTest的形式启动这个测试
我有几个Spring Boot应用程序的实例部署在一个独特的Tomcat中。每个应用程序都配置了一个context.xml文件,该文件包含客户代码 有什么方法可以使这个日志返回配置工作吗? 在application.properties中定义的属性的使用效果很好(我将logback.xml重命名为logback-spring.xml)。在我看来,Spring boot在初始化日志记录之前并没有在E
我正在尝试设置我的spring boot应用程序的上下文根。我将我的应用程序作为war文件部署到Jboss。当我将根URL部署到JBoss/wildly时,我试图设置它的上下文路径,但是它似乎被忽略了。除非我添加一个设置contex-root变量的jboss-web.xml文件,否则我的部署url总是基于war文件名: 例如:myapp.war总是部署为:localhost:8080/myapp,
我是一个Spring新手,正在制作一个Spring Web应用程序(不是Spring-boot,这有多大区别?)。部署在Tomcat7服务器上。 应用程序已启动并运行。我的问题是只能通过标准URL访问: http://mycompany.com:8081/cwing-0.0.3-snapshot/index.html 以下操作不起作用:http://mycompany.com:8081/cwing