Springコンテナオブジェクトを初期化する際、開発者が初期化後の操作を行う方法
1417 ワード
オブジェクトの初期化が完了した後、いくつかの論理操作を行う場合は、これらのコードはどこに置くべきですか? 1.コンフィギュレーションファイルのbeanラベル内でinit-methodプロパティを使用して初期化されたメソッド名を指定するか、メソッド上で注記@Beanで識別して、上の論理コードをここに置くことで を実行できます.
または 2.InitializingBeanインタフェースを実現することによりafterPropertiesSet()法を実現し,この方法内で初期化後の操作を行い, .3,@PostConstruct注記を用いて方法を識別し,初期化後の操作を行い, . 4. 前の3つはいずれも1つのオブジェクトに対する操作であり、最後にBeanPostProcessorインタフェースを特定のクラスで実現し、1つのオブジェクトまたは複数のオブジェクトを初期化する操作であり、その実現方法は以下の通りである: .
関連サンプルコードを移動してくださいhttps://gitee.com/HeadingAlong/springfeature.git
または
@Bean
public void doInit(){
System.out.println("BeanPhone ");
}
@Override
public void afterPropertiesSet() throws Exception {
//do something after init
System.out.println("phone has bean created");
}
@PostConstruct
public void doInit3(){
System.out.println("BeanPhone ");
}
@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