记录从数据库把数据初始化mongodb缓存的一些坑
?在項(xiàng)目啟動(dòng)時(shí),需要做一些項(xiàng)目啟動(dòng)后的預(yù)操作,比如初始化數(shù)據(jù)進(jìn)緩存等等。
這時(shí)就需要寫(xiě)listener,等監(jiān)聽(tīng)。在項(xiàng)目啟動(dòng)時(shí)把數(shù)據(jù)緩存進(jìn)mongodb。
但是這會(huì)有一個(gè)問(wèn)題。項(xiàng)目一般都是把各種bean交給spring管理生命周期。如果在監(jiān)聽(tīng)里面使用
這種方式獲取bean的話,報(bào)錯(cuò)空指針異常!因?yàn)樵?/p>
public void contextInitialized(ServletContextEvent arg0)
方法里,spring還沒(méi)有把bean都初始化完成。如果調(diào)用就會(huì)找不到bean
使用以下方法:
1、ApplicationListener
?
?
可以在spring完全啟動(dòng)完后執(zhí)行異步框架,把從數(shù)據(jù)庫(kù)查到的數(shù)據(jù)緩存進(jìn)mongodb
注意:
如果使用
或者
@PostConstruct 方法注解
都會(huì)造成mongodb還未初始化完成。報(bào)錯(cuò)或者用了ExecutorService異步框架的話會(huì)一直阻塞等待。
轉(zhuǎn)載于:https://www.cnblogs.com/bate/p/8658444.html
總結(jié)
以上是生活随笔為你收集整理的记录从数据库把数据初始化mongodb缓存的一些坑的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 小带鱼上征信吗
- 下一篇: 对比两个表中,字段名不一样的SQL