Springコンテナオブジェクトを初期化する際、開発者が初期化後の操作を行う方法


オブジェクトの初期化が完了した後、いくつかの論理操作を行う場合は、これらのコードはどこに置くべきですか?
  • 1.コンフィギュレーションファイルのbeanラベル内でinit-methodプロパティを使用して初期化されたメソッド名を指定するか、メソッド上で注記@Beanで識別して、上の論理コードをここに置くことで
  • を実行できます.
    または
    @Bean
    public void doInit(){
        System.out.println("BeanPhone  ");
    }
  • 2.InitializingBeanインタフェースを実現することによりafterPropertiesSet()法を実現し,この方法内で初期化後の操作を行い,
  • .
    @Override
    public void afterPropertiesSet() throws Exception {
        //do something after init
     System.out.println("phone has bean created");
    }
  • 3,@PostConstruct注記を用いて方法を識別し,初期化後の操作を行い,
  • .
    @PostConstruct
    public void doInit3(){
        System.out.println("BeanPhone  ");
    }
  • 4. 前の3つはいずれも1つのオブジェクトに対する操作であり、最後にBeanPostProcessorインタフェースを特定のクラスで実現し、1つのオブジェクトまたは複数のオブジェクトを初期化する操作であり、その実現方法は以下の通りである:
  • .
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        if(bean instanceof User){
            System.out.println(" user");
     }
        return bean;
    }
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        if(bean instanceof User){
            User user = (User) bean;
     user.setName("john");
     user.setPhone("13566655584");
     return user;
     }
        return bean;
    }

    関連サンプルコードを移動してくださいhttps://gitee.com/HeadingAlong/springfeature.git