2011-08-21 7 views

Odpowiedz

4

Dobre pytanie - nie sądzę (zakładając, że przez "wstrzyknięcie sterowane adnotacją" odnosisz się do adnotacji na AnyAction).

Jest możliwe, że następująca mogą działać, ale nie sądzę Wiosna uznaje @Resources adnotacji:

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

spróbować w każdym razie, nigdy nie wiadomo.

Inne niż można użyć @Configuration -Style konfigurację zamiast 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

@ Źródła mają zastosowanie tylko do typów, a nie pól. Wygląda na to, że jeśli istnieje tak prosty sposób wyrażania list w XML, powinien istnieć sposób na to samo z adnotacjami. To rozczarowuje. – Cameron

1

Tak, wiosna chętnie wstrzyknąć wszystkie skonfigurowane przechwytujących jeśli używasz tego wzoru:

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

pamiętać, że prawdopodobnie będzie musiał skonfigurować default-autowire = byType w twoim pliku context.xml. Nie wiem, czy istnieje alternatywa do tego w konfiguracji zwykłej adnotacji.

Powiązane problemy