2 回答

TA貢獻1794條經(jīng)驗 獲得超7個贊
如果你自己創(chuàng)建一個對象,使用new,并且這個對象不是由@Bean-annotated 方法返回的,那么它就不是 Spring bean,因此 Spring 不會向其中注入任何東西。
您可以只添加一個帶@Bean 注釋的方法返回new MyFilter(),然后調(diào)用該方法myFilter()以獲取 bean,或者將一個MyFilteras 參數(shù)添加到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條經(jīng)驗 獲得超4個贊
很簡單,@Component
在你的過濾器類上添加注解,它會讓@Autowired
注解在內(nèi)部工作,因為 Spring 依賴注入將處理你的過濾器類并注入服務(wù) bean。
添加回答
舉報