2 回答
TA贡献1794条经验 获得超7个赞
如果你自己创建一个对象,使用new,并且这个对象不是由@Bean-annotated 方法返回的,那么它就不是 Spring bean,因此 Spring 不会向其中注入任何东西。
您可以只添加一个带@Bean 注释的方法返回new MyFilter(),然后调用该方法myFilter()以获取 bean,或者将一个MyFilteras 参数添加到myFilter().
例子:
@Bean
@Order(1)
public FilterRegistrationBean<MyFilter> myFilter() {
FilterRegistrationBean<MyFilter> contextFilter = new FilterRegistrationBean<>();
contextFilter.setFilter(theActualFilter());
contextFilter.addUrlPattern("/api/*");
return contextFilter;
}
@Bean
public MyFilter theActualFilter() {
return new MyFilter(); // now this is a Spring bean
}
或者
@Bean
@Order(1)
public FilterRegistrationBean<MyFilter> myFilter(MyFilter theActualFilter) {
FilterRegistrationBean<MyFilter> contextFilter = new FilterRegistrationBean<>();
contextFilter.setFilter(theActualFilter);
contextFilter.addUrlPattern("/api/*");
return contextFilter;
}
@Bean
public MyFilter theActualFilter() {
return new MyFilter(); // now this is a Spring bean
}
TA贡献1802条经验 获得超4个赞
很简单,@Component
在你的过滤器类上添加注解,它会让@Autowired
注解在内部工作,因为 Spring 依赖注入将处理你的过滤器类并注入服务 bean。
添加回答
举报