Springオブジェクト初期化前後実行操作

8186 ワード

記事の目次
  • Springオブジェクト初期化前後実行動作
  • Springオブジェクト初期化前後実行操作
    機能:BeanPostProcessorインターフェースを実装するクラスを通して、このクラスのオブジェクトをspringに登録する.すべてのspringオブジェクトの初期化前後にカスタマイズ方法を実行します.
    ステップ:
  • は、BeanPostProcessorインターフェースを実装するクラスpsを作成する.複数のBeanPostProcessorインターフェースのクラスを作成するには、Orderedインターフェースを実装する必要があり、方法の実行順序の優先度を決定し、数値が小さいほど優先度が高く、最小値は0となる.
  • は、xmlプロファイルにおいて、beanオブジェクトのバックプロセッサ(すなわち、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オブジェクトは初期化前後にカスタム方法を実行します.