Giriş
Şu satırı dahil ederiz.
FactoryBean Nedir?
Açıklaması şöyle. Yani belirtilen tipten bir nesne yaratır ve bu nesne bean kabul edilir. Dolayısıyla @Autowired olarak inject edilebilir.
Şu satırı dahil ederiz.
import org.springframework.beans.factory.FactoryBean;
Bu sınıfın döndürdüğü sınıf tipini @Component olarak işaretleyeme gerek yok. Spring bu işi bizim için yapıyor. Açıklaması şöyle.The object created by the FactoryBean are managed by Spring, but not instantiated or configured by Spring.Döndürdüğümüz nesne tipini @Autowire olarak kullanabiliriz.
FactoryBean Nedir?
Açıklaması şöyle. Yani belirtilen tipten bir nesne yaratır ve bu nesne bean kabul edilir. Dolayısıyla @Autowired olarak inject edilebilir.
A FactoryBean is an interface that you, as a developer, implements when writing factory classes and you want the object created by the factory class to be managed as a bean by Spring...
getObject() metodu
Örnek
Şöyle yaparız. MessageDigest nesnesi artık @Autowired olarak kullanılabilir. Burada isSingleton() true dönüyor
Şöyle yaparız.
Örnek
Şöyle yaparız. MessageDigest nesnesi artık @Autowired olarak kullanılabilir. Burada isSingleton() true dönüyor
public class MessageDigestFactoryBean implements FactoryBean<MessageDigest>{
private String algorithmName = "MD5";
private MessageDigest messageDigest = null;
@Override
public MessageDigest getObject() throws Exception {
return messageDigest;
}
@Override
public Class<?> getObjectType() {
return MessageDigest.class;
}
@Override
public boolean isSingleton() {
return true;
}
@PostConstruct
public void postConstructHandler() throws NoSuchAlgorithmException {
messageDigest = MessageDigest.getInstance(algorithmName);
}
public void setAlgorithmName(String algorithmName) {
this.algorithmName = algorithmName;
}
}
getObjectType metoduŞöyle yaparız.
ublic class SearcherFactory implements FactoryBean<Searcher> {
@Override
public Class<Searcher> getObjectType() {
return Searcher.class;
}
....
}
isSingleton metodu
Bu metod true döndürürse getObjet() metodu bir kere çağrılır. Bu metod false döndürürse bean prototype kabul edilir ve getObject() metodu her seferinde çağrılır.
Örnek
Şöyle yaparız.
Örnek
Şöyle yaparız.
public boolean isSingleton() {
return true;
}
Hiç yorum yok:
Yorum Gönder