前言:在业务开发中,有时需要进行数据的预加载,需要在某一个bean 被spring 完成加载之后,就将数据加载到缓存中
实现:
在spring 对某一个类完成加载之后做处理,参考:
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class MyInitializingBean implements InitializingBean {
public MyInitializingBean() {
System.out.println("我是MyInitializingBean构造方法执行...");
}
@PostConstruct
public void postConstruct() {
System.out.println("我是postConstruct方法执行...");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("我是afterPropertiesSet方法执行...");
}
public void init(){
System.out.println("我是init方法执行...");
}
@Bean(initMethod = "init",destroyMethod = "destroy",name = "myInitializingBeanCustomer")
public MyInitializingBean myInitializingBean() {
return new MyInitializingBean();
}
public void destroy(){
System.out.println("我是destroy方法执行...");
}
}
效果:加载bean 时的顺序
- 先对构造方法完成调用;
- 然后对 postConstruct方法调用;
- 然后对afterPropertiesSet 调用
- 然后对init 方法调用
- 最后对destroy 方法调用
所以我们可以在 postConstruct方法和 afterPropertiesSet 在对该bean 完成加载之后 做业务处理,进行数据的预加载。