2016-03-31 26 views
2

Spring 3.X'te bir alanın içine otomatik alan oluşturmak için bir sınıfın bileşen olarak eklenmesi gerekir mi? Benim beans.xmlYay sınıfının AutoWire'a bir özellik olması gerekiyor mu?

<context:component-scan base-package="com.package.beans" /> 

MyBean.javacom.package.beans.MyBean package içindedir sonra

@Service("myBean") 
public class Mybean { 

} 

public class Target { 
    @Autowired 
    @Qualifier("myBean") 
    private MyBean; 
} 

Ve:

ı var diyelim.

Target sınıfı, alanlarından birini otomatikleştirmek için @Component veya başka bir bahar notu olarak ek açıklamalı mı?

cevap

0

Hayır, açıklamalı olması gerekmiyor, ama bir Spring Bean olmalı. Bunu @Component gibi bir stereotype ek açıklama kullanarak yapabilirsiniz, ancak bir <bean> öğeyi XML'nizde bildirerek veya bir @Bean yapılandırma yönteminden döndürerek bir Spring bean hazırlayabilirsiniz.

Otomatik kablolamada bir fark yaratmadığından, ancak testi daha kolay hale getirdiğinden ve bazı hataları daha zor hale getirdiğinden, her durumda kurucu enjeksiyonunun kullanılması tercih edilir.

+0

Bileşen ("hedef") ile "Hedef" i ekledikten sonra bile, yine de otomatik olarak otomatik olarak çalışır ve sınıfın bulunduğu pakette bileşen taraması kurdum. Aslında, aynı paket içindeki diğer sınıflar autowiring oldu iyi de Component ile açıklandı, ama Bileşen ("hedef") ek açıklama sonra "Hedef" ile hala hayır şans. Sorunun ne olduğu hakkında bir fikrin var mı? –

+0

Neredeyse kesinlikle yeni Target() 'diyorsunuz. Bahsettiğim "belli bir hata". – chrylis

+0

Tutulmaya yüklediğim her projeyle ilgili bir arama, "yeni Hedef()" in tek bir oluşumunu değil. Bu sorun değil. –