Sprint konusunda oldukça yeni ve uygulamam için Spring 3.x ve roo1.1.1 kullanıyorum.Bir fabrika modeli gibi uygulamayı dinamik olarak enjekte etmek için @Outowired nasıl kullanılır
Diğer farklı sınıflara otomatik olarak bağlanacak bir arabirimin çoklu uygulamasına sahibim. Sadece çalışma zamanında hangi uygulamanın gerçekleştirileceğine karar verebilirdim. Bu bir fabrika modeli ile elde edilmelidir.
public interface SomeInterface {
public void doSomething();
}
Uygulama 1.
public class SomeOb implements SomeInterface {
public void doSomething() {
//Do something for first implementation here
}
}
Uygulama
public class SomeOtherOb implements SomeInterface {
public void doSomething() {
//Do something for first implementation here
}
}
2. Şimdi Hizmetimde i
@Service
public class MyService {
@Autowired
SomeInterface ob;
//Rest of the code here
}
1) seçmek için mantık gibi bu Autowired gerekli olan Autow olmak için uygulama ired sadece çalışma zamanını bildiğinden, bunu kabul etmek için @Qualifier notunu kullanamıyorum. 2) Ben etiket sözü var applicationContext.xml olarak
public class SomeFactoryBean implements FactoryBean<SomeInterface> {
@Override
public SomeInterface getObject() throws Exception {
if(/*Somecondition*/) {
return new SomeOb();
} else
return new SomeOtherOb();
}
@Override
public Class<? extends SomeInterface> getObjectType() {
if(/*Somecondition*/) {
return SomeOb.class;
} else
return SomeOtherOb.class;
}
@Override
public boolean isSingleton() {
return false;
}
}
gibi bir FactoryBean yaratmaya çalışmışlardır. i web sunucusu çalıştırdığınızda
i herkes bu sorunu çözmek için bana yardım edebilir
No unique bean of type [com.xxxx.xxxx.SomeInterface] is defined: expected single matching bean but found 3: [xxxx, xxxxxxx, xxxxFactory]
gibi bir hata çalıştırın. Eğer bu hakkı yapmazsam, lütfen bunu doğru şekilde yapmak için yönlendirin. Eğer sadece uygulama
belirli bir örneği için fasulye biri uygulanmasını ihtiyaç Ama eğer
Teşekkür ve takdir herhangi bir yardım, JJK isSingleton() dan gerçek