CommandLineRunner 和 @PostConstruct 应用场景
介绍:https://blog.csdn.net/cx1110162/article/details/87866633
@PostConstruct
Constructor -> @Autowire -> @PostConstruct
在类初始化完成后自动执行, 自身属性侧的自动配置
CommandLineRunner
应用启动完成后自动执行,关联服务的配置,加载缓存等
ps: 感觉没啥区分的意义,有懂哥,请指教
更新:2021.8.4
今天遇到一种情况,使用CommandLineRunner,用来加载缓存到map,结果不是上线,kafka消费的时候出现了空指针的问题。
问题点:在项目启动的时候即 Started GreetingCardApplication in 59.588 seconds (JVM running for 70.452) 这之后开始执行run 加载缓存而此时加载好kafka服务也开始进行消费,此时由于缓存不一定加载完毕,消息处理过程中出现空指针的问题。
解决方法:使用@PostConstruct替代,在项目初始化bean的时候执行相关的方法,此在服务启动成功之前执行缓存加载,可以避免在kafka开始消费,缓存还没加载的问题。