2 回答

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