İlkbaharda mümkün olabilir, fasulyenin sınıfının kamu kurucusu yok, sadece özel mi? Fasulye oluşturulduğunda bu özel kurucu çağrılacak mı? Teşekkürler.Java Özel yapıcıya sahip Spring bean
cevap
Evet, Bahar özel kurucuları çalıştırabilir. Görünürden bağımsız olarak, doğru argümanlarla bir kurucu bulursa, yapıcının erişilebilir olmasını sağlamak için yansımayı kullanır.
Lütfen bana dokümanlar için referans verebilir misiniz? Yapıcı parametreler ve bu argümanlara atanan değerlere xml dosyasında sahiptir. – user710818
Yani bir fasulye özel fasulye gibi özel bir şey varsa() {...} bahar bunu çağırabilir? Bu nasıl mümkün, bu "özel" in tüm amacına meydan okuyor. –
Maalesef, yalnızca argüman olmama konusunda hatalıyım. Sadece kendi projelerimde fark ettiğim şeylerle gidiyorum. Her yerde bahar belgelerinde gördüğümü söyleyemem. Fakat bu, sınıflandırmadan, sınıflandırmadan sorumlu olan javadoc.http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/beans/BeanUtils.html#instantiateClass(java.lang.reflect.Constructor,%20java.lang.Object .. .) –
Normalde bu tür çekirdeklerde statik bir fabrika yöntemine sahip olursunuz, bu yöntemin, o fasulyenin bir örneğini elde etmek için ilkbahar olarak belirtebilirsiniz. Bkz. 3.3.1.3 here. Görünürlük kısıtlamalarına karşı çıkmak yerine, Spring tarafından önerilen yol budur.
garip, statik bir yöntem yok, kamu kurucusu yok ama hata ayıkladığım zaman - özel kurucu çağrıldı! sun.reflect.NativeConstructorAccessorImpl – user710818
Özellikler/kod olmadan, daha fazla yorum yapmak mümkün olmayacaktır! –
Sanırım yanılıyorsunuz. Belirli bir kod yok - hata ayıklayıcıda sadece standart güneş/yay yöntemlerini görüyorum. – user710818
Hep The IoC container: Instantiation using an instance factory method den ziyade bir varsayılan kurucu güvenmek yerine fasulye oluşturmak için bir fabrika yöntemi kullanabilirsiniz: Bu, fasulye için varsayılan olmayan kurucular kullanabilmesidir
<!-- the factory bean, which contains a method called createInstance() -->
<bean id="serviceLocator" class="com.foo.DefaultServiceLocator">
<!-- inject any dependencies required by this locator bean -->
</bean>
<!-- the bean to be created via the factory bean -->
<bean id="exampleBean"
factory-bean="serviceLocator"
factory-method="createInstance"/>
ve Fabrika metodu çekirdeği için bağımlılıklar da enjekte edilebilir.
ilginç, ama ben fabrika bulamıyorum. Başka bir şekilde var olabilir mi? – user710818
@Matthew: Bazı fugly üçüncü taraf kodları etrafında Spring uyarlama görünüyor. Bu sadece dağınık olmak için _bound_. –
@Donal, hayır Yorumda ne dediğini anlamadım. –
Evet, Özel yapımcılar ilkbaharda çağrılır. kodumu düşünün :
Bean tanım dosyası:
<bean id="message" class="com.aa.testp.Message">
<constructor-arg index="0" value="Hi Nice"/>
</bean>
Bean sınıfı:
package com.aa.testp;
public class Message {
private String message;
private Message(String msg) {
// You may add your log or print statements to check execution or invocation
message = msg;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public void display() {
System.out.println(" Hi " + message);
}
}
yukarıdaki kod çalışıyor. Bu nedenle, bahar özel kurucuyu çağırdı.
Bir deneme yapıp sonuçları yayınlamaya ne dersiniz? – dm3
Zor - Tüm kaynağım yok. – user710818