Springオブジェクト初期化前後実行操作
8186 ワード
記事の目次 Springオブジェクト初期化前後実行動作 例 Springオブジェクト初期化前後実行操作
機能:
ステップ:は、 は、xmlプロファイルにおいて、beanオブジェクトのバックプロセッサ(すなわち、 を登録する.
実例
機能:
BeanPostProcessor
インターフェースを実装するクラスを通して、このクラスのオブジェクトをspringに登録する.すべてのspringオブジェクトの初期化前後にカスタマイズ方法を実行します.ステップ:
BeanPostProcessor
インターフェースを実装するクラスpsを作成する.複数のBeanPostProcessor
インターフェースのクラスを作成するには、Ordered
インターフェースを実装する必要があり、方法の実行順序の優先度を決定し、数値が小さいほど優先度が高く、最小値は0となる.BeanPostProcessor
インターフェースクラスのbeanオブジェクトを実現すること)実例
BeanPostProcessor
インターフェースのクラスpublic class MyBeanPostProcessor implements BeanPostProcessor{
/*
* bean
*/
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println(beanName+" ...");
return bean;
}
/*
* bean
*/
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println(beanName+" ...");
return bean;
}
}
xmlプロファイル登録上のクラスbeanオブジェクト
<bean class="com.bb.processor.MyBeanPostProcessor" id="beanPostProcessor">bean>
テストクラスのオブジェクトpublic class UserService {
private String name;
public UserService(){
System.out.println(" ...");
}
public void setName(String name) {
System.out.println(" ...");
this.name = name;
}
@PostConstruct
public void init(){
System.out.println(" ...");
}
}
ps:@PostConstruct
注釈方法は、このクラスのオブジェクトの初期化時に実行される.ファイルをxml設定ファイルに入れないでください.注釈スキャンを開始してください.<context:annotation-config>context:annotation-config>
テスト方法@Test
public void test2(){
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService us = (UserService) ac.getBean("userService");
ac.registerShutdownHook();
}
プリントアウト ...
...
userService ...
...
userService ...
まとめ:単純なBeanPostProcessor
インターフェースでクラスを実現することにより、すべてのspringオブジェクトは初期化前後にカスタム方法を実行します.