共计 1746 个字符,预计需要花费 5 分钟才能阅读完成。
我最新最全的文章都在 南瓜慢说 www.pkslow.com,欢送大家来喝茶!
1 简介
很多工夫当一个 Bean
被创立进去后,咱们心愿做一些初始化操作,如初始化数据、缓存预热等。有以下三种办法:
- 初始化办法
initMethod
- 注解
@PostConstruct
InitializingBean
的afterPropertiesSet
办法
2 三种办法实现
先筹备一个类用于测试,代码如下:
public class BeanLifeCheck implements InitializingBean {private static final Logger logger = LoggerFactory.getLogger(BeanLifeCheck.class);
@Value("${spring.application.name}")
private String applicationName;
public BeanLifeCheck() {logger.info("BeanLifeCheck: Construct" + applicationName);
}
public void initMethod() {logger.info("BeanLifeCheck: initMethod" + applicationName);
}
@PostConstruct
public void postConstruct() {logger.info("BeanLifeCheck: postConstruct" + applicationName);
}
@PreDestroy
public void preDestroy() {logger.info("BeanLifeCheck: preDestroy" + applicationName);
}
@Override
public void afterPropertiesSet() throws Exception {logger.info("BeanLifeCheck: afterPropertiesSet" + applicationName);
}
}
2.1 初始化办法 initMethod
这个以前是通过 xml
配置文件来定义的,当初能够间接定义在 @Bean
注解上,如下:
@Bean(initMethod = "initMethod")
public BeanLifeCheck beanLifeCheck() {return new BeanLifeCheck();
}
2.2 注解 @PostConstruct
间接在办法上加注解即可:
@PostConstruct
public void postConstruct() {logger.info("BeanLifeCheck: postConstruct" + applicationName);
}
2.3 InitializingBean 的 afterPropertiesSet 办法
须要类实现接口InitializingBean
,如下:
@Override
public void afterPropertiesSet() throws Exception {logger.info("BeanLifeCheck: afterPropertiesSet" + applicationName);
}
3 总结
运行后的执行日志及程序如下:
2021-02-06 17:44:52.377: BeanLifeCheck: Construct null
2021-02-06 17:44:52.379: BeanLifeCheck: postConstruct Springboot-Common
2021-02-06 17:44:52.379: BeanLifeCheck: afterPropertiesSet Springboot-Common
2021-02-06 17:44:52.379: BeanLifeCheck: initMethod Springboot-Common
2021-02-06 17:45:10.347: BeanLifeCheck: preDestroy Springboot-Common
三种办法感觉区别不大,用哪个就看习惯了。
代码请查看:https://github.com/LarryDpk/p…
欢送关注微信公众号 <南瓜慢说>,将继续为你更新 …
多读书,多分享;多写作,多整顿。
正文完