Sha*_*yan 6 configuration spring components servlet-filters spring-boot
我想在Spring Boot Web应用程序中配置Servlet过滤器,我想使用@Value注释自动装配一些Beans和属性.我能够使用以下配置实现此目的:
@Configuration
public class MyWebConfig{
@Autowire
MyFilter filter;
@Autowire
MyAnotherFilter anotherFilter;
@Bean
public FilterRegistrationBean someFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(filter);
registration.setOrder(1);
return registration;
}
@Bean
public FilterRegistrationBean someFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(anotherFilter);
registration.setOrder(2);
return registration;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经配置了两个过滤器(为简洁起见只显示一个过滤器):
@Configuration
public class MyFilter implements Filter{
@Value("${my.property.key}")
private String myProperty;
public void doFilter(...){
....
}
//init and destroy stubs
....
}
Run Code Online (Sandbox Code Playgroud)
一切正常.我仍然有一些问题:
1)即使我注释掉FilterRegistrationBean代码片段也是如此.如果我想设置某个顺序,我觉得我必须使用FilterRegistrationBean.正确?
2)有没有什么方法可以设置订单或其他配置,如没有FilterRegistrationBean的网址模式?
3)我相信我可以使用@Component可以替换Filter类上的@Configuration注释,它会正常工作吗?
4)最后将Filter类本身标记为@ Component/@Configuration是否合适?
请注意,我在主应用程序类上使用@SpringBootApplication.
And*_*son 10
1)即使我注释掉FilterRegistrationBean代码片段也能正常工作.如果我想设置某个顺序,我觉得我必须使用FilterRegistrationBean.正确?
它的工作原理是因为任何Filterbean都会自动注册一些默认配置,除非你提供了一个显式的注册bean.
2)有没有什么方法可以设置订单或其他配置,如没有FilterRegistrationBean的网址模式?
您可以通过使用设置顺序@Order上的Filter,或具有实现Ordered.
如果要设置URL模式,则应使用注册Bean
3)我相信我可以使用@Component可以替换Filter类上的@Configuration注释,它会正常工作吗?
正确.您的过滤器不是配置,因此应该使用@Component而不是注释@Configuration
4)最后将Filter类本身标记为@ Component/@Configuration是否合适?
是的,用它来注释过滤器就可以了@Component.另一种@Bean方法是在@Configuration类上使用方法.
| 归档时间: |
|
| 查看次数: |
6227 次 |
| 最近记录: |