2 Aralık 2018 Pazar

SpringContext @EventListener Anotasyonu

Giriş
Bir hiyerarşi varsa ve anotasyon kalıtan sınıfta da kullanılırsa kod kalıtan sınıfa gider. Yani ata sınıftaki metod override edilebilir.

Örnek
Şöyle yaparız.
@EventListener
public void handleContextStart(EnvironmentChangeEvent event) {
  System.out.println("changed");
  //Use this for getting the version from consul

}
classes Alanı
Metod imzası parametre almaz
Örnek
Şöyle yaparız.
@EventListener(ApplicationReadyEvent.class)
public void doSomethingAfterStartup() {
    TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
Diğer
Anotasyonun Birden Fazla Kullanımı - Multiple @EventListener Annotations
Aynı sınıf içinde birden fazla metodu bu anotasyon ile işaretleyebiliirz.
Örnek
Şöyle yaparız.
@Component
public class ListenerClass {

  @EventListener
  public void handleFooEvent(Foo fooEvent) {...}

  @EventListener
  public void handleBarEvent(Bar barEvent) {...}

}
@Order ile Birlikte Kullanımı
Açıklaması şöyle.
It is also possible to define the order in which listeners for a certain event are to be invoked. To do so, add Spring's common @Order annotation alongside this event listener annotation.
Örnek
Bir sınıfta bu anotasyona sahip iki metod varsa hangisinin önce çağrılcağını belirtmek mümkün. Önce çağrılmasını istediğimiz metod için şöyle yaparız.
@EventListener
@Order(0)
@Async
public void doSomethingForEvent(SomeEvent event)
Sonra çağrılmasını istediğimiz metod için şöyle yaparız
@EventListener
@Order(1)
@Async
public void doAnotherThingForEvent(SomeEvent event)

Hiç yorum yok:

Yorum Gönder