2011-08-21 17 views

cevap

4

İyi soru - Bunu düşünmüyorum ("ek açıklamalarla yönlendirilen bir enjeksiyon" ile AnyAction ek açıklamalarına atıfta bulunduğunuzu varsayarak).

Bu şu işe yarayabilecek mümkündür, ama Bahar @Resources ek açıklama tanır sanmıyorum:

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

bir hiç belli olmaz, zaten daha deneyin. Bu modeli kullanan varsa

@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 yalnızca alanlar için değil, türler için geçerlidir. XML'de listeleri ifade etmenin basit bir yolu var gibi görünüyor, ek açıklamalarla aynı şeyi yapmanın bir yolu olmalı. Bu hayal kırıklığı yaratıyor. – Cameron

1

Evet, Bahar mutlu tüm yapılandırılmış önleyicilerin enjekte edecektir: dışında

, bunun yerine XML @Configuration tarzı yapılandırma kullanabilirsiniz

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

Not sizi muhtemelen context.xml dosyanızda default-autowire = byType öğesini yapılandırmanız gerekecektir. Düz açıklama yapılandırmasında buna bir alternatif olup olmadığını bilmiyorum.

İlgili konular