17 Ocak 2020 Cuma

SpringContext BeanFactoryAware Arayüzü - Bean Yüklendikten Sonra Çalışır

Giriş
Şu satırı dahil ederiz
import org.springframework.beans.factory.BeanFactoryAware;
Aware kelimesi ile biten bazı Spring arayüzleri var. Bunlar şöyle.
ApplicationContextAware
BeanFactoryAware
BeanNameAware
Aware kelimesi ile biten bu arayüzleri gerçekleştiren sınıflar setter() metodları ile Spring'in iç mekanizmasına erişebiliyorlar. Yani kendi sınıfım FooAware arayüzünü gerçekleştiriyorsa - Foo Spring içindeki bir mekanizma olsun - setFoo() şeklindeki bir metod ile Foo'ya erişebiliyorum.

Bu sınıf ile BeanFactory nesnesi atanıyor.

Lifecycle
Bean Lifecycle yazısına bakabilirsiniz.

setBeanFactory metodu
Açıklaması şöyle.
Beans might need access to the bean factory that created it, say to call any service from the bean factory.
Should you need to obtain a reference to the bean factory, implement the BeanFactoryAware interface. This interface provides the setBeanFactory() method.
Örnek
Şöyle yaparız.
@Component
public class BeanPropertiesUtil  implements InitializingBean, BeanFactoryAware {

  private BeanFactory beanFactory;
  
  @Override
  public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
    this.beanFactory = beanFactory;
  }
  ...
}
Örnek
Şöyle yaparız.
public class TestBeanFactoryAware implements BeanFactoryAware {
  @Override
  public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
    System.out.println("[TestBeanFactoryAware] " + 
      beanFactory.getBean(TestBeanFactoryAware.class).getClass().getSimpleName());
  }
}



Hiç yorum yok:

Yorum Gönder