dom*_*arr 22 jetty spring-mvc spring-boot
在经典的web.xml类型配置中,您可以配置上下文参数,如此
web.xml中
...
<context-param>
<param-name>p-name</param-name>
<param-value>-value</param-value>
</context-param>
...
Run Code Online (Sandbox Code Playgroud)
如何在spring-boot中实现.我有一个需要参数的过滤器.
我正在使用@EnableAutoConfiguration并包含<artifactId>spring-boot-starter-jetty</artifactId>在我的pom中.
And*_*son 41
您可以ServletContext通过声明ServletContextInitializerbean 来设置参数:
@Bean
public ServletContextInitializer initializer() {
return new ServletContextInitializer() {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.setInitParameter("p-name", "-value");
}
};
}
Run Code Online (Sandbox Code Playgroud)
更新:在Spring Boot 1.2中使用a ServletContextInitializer不再需要.您现在可以ServletContext在一行中配置参数application.properties:
server.context_parameters.p-name=-value
Run Code Online (Sandbox Code Playgroud)
您可以使用Java配置实际实现此目的.如果你有需要一些参数的过滤器,只需将它们放在你的application.yml(或.properties)中,@Value在你的config类中注入它们并注册它们FilterRegistrationBean.
例如:
@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;
}
Run Code Online (Sandbox Code Playgroud)
JavaDoc也适用于FilterRegistrationBean:
更新
您可以在SpringBootServletInitializer#onStartup()方法中注册servlet上下文的参数.您的Application类可以扩展SpringBootServletInitializer,您可以覆盖该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);
}
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是ServletContextInitializer根据Andy Wilkinson的建议定义bean.
小智 5
从 Spring Boot 2.0.0 开始,他们更新了添加上下文参数的方式:
server.servlet.context-parameters.yourProperty.
Run Code Online (Sandbox Code Playgroud)
您可以在此链接上查看更多更新
| 归档时间: |
|
| 查看次数: |
34004 次 |
| 最近记录: |