Spring context初期化後のbean initのシーン


本人は最近難題に出会いました.spring webflowに対して拡張をした後、spring context初期化が完了したら、自分のbeanに対していくつかのinitの初期化操作を行う必要があります.
 
構想を実現して、私達はspring contextの自分のlistenerのライフサイクルの方法に助けを借りたいです.このイベントは、spring contextの初期化が完了したら呼び出します.私たちはこの方法で自分たちのbeanのinit方法を呼び出すことができます.
 
 
実装の詳細:
パブリックインターフェースInitilizationをカスタマイズして、spring context初期化後に呼び出されたいすべてのbeanはこのインターフェースを実現します.
 
public interface Initilization{
 
 
//   spring context         
   public void init();        

}
 
 
spring contextを実現するAppplication Listenerをカスタマイズします.
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;

@SuppressWarnings("rawtypes")
public class PostContextInitilization implements ApplicationListener {
	
	@Autowired(required=false)
	List<Initilization> list;	
	
	public List<Initilization> getList() {
		return list;
	}

	public void setList(List<Initilization> list) {
		this.list = list;
	}


	public void onApplicationEvent(ApplicationEvent event) {
		// TODO Auto-generated method stub
		if(list == null){
			return;
		}
		
		if(event instanceof ContextRefreshedEvent){
			for(Initilization initBean:list){
				initBean.initAfterContextSetup();
			}
		}
	}

}
 
 
 
これにより、spring context初期化後の処理ロジックの実現が可能となります.