How to set context-param in spring-boot
在经典的web.xml类型配置中,您可以像这样配置上下文参数
web.xml
1 2 3 4 5 6 | ... <context-param> <param-name>p-name</param-name> <param-value>-value</param-value> </context-param> ... |
在spring-boot中如何实现。 我有一个需要参数的过滤器。
我正在使用
您可以通过声明
1 2 3 4 5 6 7 8 9 10 | @Bean public ServletContextInitializer initializer() { return new ServletContextInitializer() { @Override public void onStartup(ServletContext servletContext) throws ServletException { servletContext.setInitParameter("p-name","-value"); } }; } |
更新:在Spring Boot 1.2中,不再需要使用
1 | server.context_parameters.p-name=-value |
您实际上可以使用Java配置来实现。如果您有需要某些参数的过滤器,只需将它们放在application.yml(或.properties)中,并在配置类中使用
例如:
1 2 3 4 5 6 7 8 9 | @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; } |
也是
http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/context/embedded/FilterRegistrationBean.html
更新资料
您可以在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | @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的建议定义
从Spring Boot 2.0.0开始,他们更新了添加上下文参数的方法:
1 | server.servlet.context-parameters.yourProperty. |
您可以在此链接上看到更多更新
您还可以在配置中定义InitParameterConfiguringServletContextInitializer。例:
1 2 3 4 5 6 | @Bean public InitParameterConfiguringServletContextInitializer initParamsInitializer() { Map<String, String> contextParams = new HashMap<>(); contextParams.put("p-name","-value"); return new InitParameterConfiguringServletContextInitializer(contextParams); } |