注解解释
- @PostConstruct注解在方法上,表示此方法是在Spring实例化该Bean之后马上执行此方法,之后才会去实例化其他Bean
- 一个Bean中@PostConstruct注解的方法可以有多个。
- @PostConstruct该注解被用来修饰一个非静态的void()方法。
- 被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。
用处
@PostConstruct注解Bean中的某些方法,可以用在服务器启动时的做一些初始化工作。
原理
BeanPostProcessor有个实现类CommonAnnotationBeanPostProcessor,就是专门处理@PostConstruct @PreDestroy注解。
示例
初始化本地缓存(guava)
@Slf4j
@Component
public class LocalCache {
private Cache<String,PmsProductParam> localCache = null;
@PostConstruct
private void init(){
localCache = CacheBuilder.newBuilder()
//设置本地缓存容器的初始容量
.initialCapacity(10)
//设置本地缓存的最大容量
.maximumSize(500)
//设置写缓存后多少秒过期
.expireAfterWrite(60, TimeUnit.SECONDS).build();
}
public void setLocalCache(String key,PmsProductParam object){
localCache.put(key,object);
}
public PmsProductParam get(String key){
return localCache.getIfPresent(key);
}
}