您实际上可以使用Java配置来实现此目的。如果你有需要一些参数的过滤器,只需将它们放入你的application.yml(或.properties)中,在你的配置类中使用@Value
注入它们并在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;
}
为FilterRegistrationBean
另外的JavaDoc:
http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/context/embedded/FilterRegistrationBean.html
更新
可以在SpringBootServletInitializer#onStartup()
方法注册servlet上下文参数。您的应用程序类可以扩展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);
}
}
其它替代是由Andy威尔金森所建议定义ServletContextInitializer
豆。使用ServletContextInitializer
不再需要在春季启动1.2:
查看application.properties选项的文档。他们中的许多人可以在一行中解决:) http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#appendix。 – 2015-09-01 09:02:46