2010-08-04 2 views
14

Web ApplicationContext ve SpringBeans başlatıldıktan hemen sonra çağrılması gereken karmaşık bir java programında bir yönteme sahibim.Bir Yöntemi Çağırmak Tüm SpringBeans ve ApplicationContext başlatıldıktan sonra

Ben <bean id="..." class="..." init-method="initialize"> etrafında oynuyor denedim ama bu yöntem applicationContext.get().getBean(beanId); yöntemi arayacak.

Bunu nasıl yapacağını bilen var mı diye merak ediyordum.

Teşekkür ederiz.

cevap

11

Spring 4.2'den itibaren, olay dinleyicilerini, ek açıklamaları kullanarak Springs Lifecycle olaylarına (ve kendinize) ekleyebilirsiniz. Basit bir yöntemle @EventListener ekleyin ve olay türünü ilk (ve sadece) parametre olarak ekleyin ve Spring otomatik olarak algılar ve kablolar.

https://spring.io/blog/2015/02/11/better-application-events-in-spring-framework-4-2

@Component 
public class MyListener { 

    @EventListener 
    public void handleContextRefresh(ContextRefreshedEvent event) { 
     ... 
    } 
} 
+0

Fasulyeden daha kolay – Aakash

3

Bu amaçla ApplicationListener<E> kullanabilirsiniz. Genel tip parametresinde, gereksiniminiz için ContextRefreshedEvent kullanabilirsiniz. Ve unutmayın ki, onApplicationEvent geçersiz kılınmış yöntemde, fasulye filizi gibi bir şey yapabilir ya da bir hizmet olarak kullanabilir veya buradan başka bir servisi arayabilirsiniz. Ve daha önce * Bütün fasulye başlatıldıktan * nasıl onun farklı @PostConstructor

public class MyContextRefreshListener implements ApplicationListener<ContextRefreshedEvent> { 

    @Override 
    public void onApplicationEvent(ContextRefreshedEvent event) { 
     //do what you want 
    } 
}