是否可以使用注释驱动的注入执行相同的操作:
<beans> ... <bean id="interceptorsList" class="com.mytest.AnyAction"> <property name="interceptors"> <list> <ref bean="validatorInteceptor"/> <ref bean="profilingInterceptor"/> </list> </property> </bean> </beans>
是否可以使用注释驱动注射来做同样的事情?
答案 0 :(得分:4)
好问题 - 我不这么认为(假设通过“注释驱动注入”,你指的是AnyAction
上的注释)。
以下内容可能有效,但我认为Spring不会识别@Resources
注释:
@Resources({
@Resource(name="validatorInteceptor"),
@Resource(name="profilingInterceptor")
})
private List interceptors;
无论如何都试一试,你永远都不知道。
除此之外,您可以使用@Configuration
- 样式配置而不是XML:
@Configuration
public class MyConfig {
private @Resource Interceptor profilingInterceptor;
private @Resource Interceptor validatorInteceptor;
@Bean
public AnyAction anyAction() {
AnyAction anyAction = new AnyAction();
anyAction.setInterceptors(Arrays.asList(
profilingInterceptor, validatorInteceptor
));
return anyAction;
}
}
答案 1 :(得分:1)
是的,如果您使用此模式,Spring将很乐意注入所有已配置的拦截器:
@Autowired
public void setInterceptors(List<Interceptor> interceptors){
this.interceptors = interceptors;
}
private List<Interceptor> interceptors;
请注意,您可能必须在context.xml上配置default-autowire = byType。我不知道在普通的注释配置中是否有替代方法。