springboot容器启动顺序之@Configuration ContextRefreshedEvent事件初始化 ApplicationRunner...

发布时间:2021-10-24 12:34:54

笔者最*遇到一个问题 我们根据自己业务需要? 需要首次启动springboot项目时 把数据库数据同步至本地缓存(比如ehcache)但有一个要求 在缓存未载入成功? 不允许有流量打入


一开始我们使用的是一个类实现ApplicationRunner? 但发现? 这个启动任务是需要等bean全部完成初始化 springmvc等完成初始化后才开始执行,这个时候 如果刚好遇到同步缓存进行中,就会出现缓存穿透的情况 而我们的应用又是希望完成同步完成之后? 从缓存中获取数据? 这个时候 笔者改成侦听ContextRefreshedEvent初始化完成事件? 其实这个方案也已经能解决,


只是笔者项目里面 已经有一个地方用到了这个 刚好尴尬的地方是 这个地方 是发布dubbo的执行方法? 而我其实是希望在发布dubbo接口之前完成初始化工作 因为dubbo接口也很有可能消费者会调用? 这个还是会造成缓存穿透? 所以我单独写了一个@Configuration?


@Configuration


public class SyncFaceInfoToCacheListener {


?


private static Logger logger = LoggerFactory.getLogger(SyncFaceInfoToCacheListener.class);


?


@Autowired


@Qualifier("sqliteManagerImpl")


private SqlieteManager sqlieteManager;


?


@Autowired


private FaceCompareManager faceCompareManager;


?


?


@Value("${local.sqlite.sqlname}")


private String sqlName;


?


?


@Bean


public SyncFaceInfoToCacheListener onApplicationEvent() {


//TODO这里执行业务逻辑


?


return new SyncFaceInfoToCacheListener();


?


}


这样其实优先级会高于基于bean同步完成后的事件监听:ContextRefreshedEvent


?


?


?



转载于:https://www.cnblogs.com/zhangfengshi/p/9565964.html

相关文档

  • 化妆品销售年终工作总结范文
  • 幼师简历个人评价
  • 词语暗号的实用造句
  • 人生如戏,导演是自己散文
  • FTP协议中的RETR和STOR命令
  • 山楂条的热量高吗孕妇可以吃山楂条吗
  • Android开发之旅:书籍、教程、工具和各种干货!
  • 《浮生六记》美文摘录
  • 未成年人思想道德建设工作开展情况自查报告
  • 2017年关于梦想的学生演讲稿
  • 幼儿园小班小朋友经典教案
  • gittalk插件ERROR:NOT FOUND解决
  • python 面试常见问题(1)
  • 工程先进个人主要先进事迹
  • 火锅的热量吃火锅的注意事项
  • 高压电机的修理方法和技巧有哪些
  • 裴多菲诗选
  • 疲于奔命的典故简介
  • 小米10有50倍数码变焦吗
  • C语言与C++的内存管理区别 以及 new与malloc的10点区别
  • 800字红楼梦读后感2篇
  • Modbus协议功能码分析
  • A股暴跌为何未现基金赎回潮
  • 读取图像,多个字符模板匹配
  • 五年级下册语文第四单元作文:感动的事
  • 校园里的甜作文550字7篇
  • 二级理财规划师考试《理论知识》考点
  • 分手后挽回女友的句子39句,句句暖心
  • 鲜桃药食皆为宝
  • 注册电气工程师基础考试《普通化学》习题
  • 猜你喜欢

    电脑版