2011-08-21 14 views

Respuesta

4

Buena pregunta - No lo creo (suponiendo que con "inyección controlada por anotación" se refiere a anotaciones en AnyAction).

Es posible que el siguiente podría funcionar, pero no creo que la primavera reconoce la anotación @Resources:

@Resources({ 
    @Resource(name="validatorInteceptor"), 
    @Resource(name="profilingInterceptor") 
}) 
private List interceptors; 

darle una oportunidad de todos modos, nunca se sabe.

Aparte, se puede utilizar @Configuration configuración de estilo en lugar de 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; 
    } 
} 
+0

@Resources solo se aplica a los tipos, no a los campos. Parece que si hay una manera tan simple de expresar listas en XML, debería haber una manera de hacer lo mismo con las anotaciones. Esto es decepcionante – Cameron

1

Sí, Primavera feliz inyectará todos los interceptores configurados si se utiliza este patrón:

@Autowired 
public void setInterceptors(List<Interceptor> interceptors){ 
    this.interceptors = interceptors; 
} 
private List<Interceptor> interceptors; 

Tenga en cuenta que probablemente tendrá que configurar default-autowire = byType en su context.xml. No sé si hay una alternativa a esto en la configuración de anotación simple.

Cuestiones relacionadas