当前位置: 首页 > news >正文

溧阳网站设计义乌外贸公司建站

溧阳网站设计,义乌外贸公司建站,企业手机网站开发,cms系统做漫画网站目录 使用PostConstruct注解 实现InitializingBean接口 实现CommandLineRunner接口 实现ApplicationRunner接口 使用EventListener注解监听ApplicationReadyEvent事件 应用启动完成之前或者之后#xff0c;我们需要拿数据库中的一些数据加载到本地缓存中。这些数据一般都…目录 使用PostConstruct注解 实现InitializingBean接口 实现CommandLineRunner接口 实现ApplicationRunner接口 使用EventListener注解监听ApplicationReadyEvent事件 应用启动完成之前或者之后我们需要拿数据库中的一些数据加载到本地缓存中。这些数据一般都是不经常变更而且有被经常读取的并且数据量不是很大的。这样操作可以减少一些数据库的压力。下面是我们常用的实现方式具体的要用那种看对应各自应用的设计和需求。 使用PostConstruct注解 在需要加载数据的组件中可以使用PostConstruct注解的方法该方法会在Spring容器初始化该类之后自动调用 import javax.annotation.PostConstruct; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; Component public class CacheInitializer { Autowired private YourRepository yourRepository; // 假设你有一个访问数据库的Repository Autowired private CacheManager cacheManager; // 假设你使用Spring Cache进行缓存管理 PostConstruct public void init() { // 从数据库中获取数据 ListYourData dataList yourRepository.findAll(); // 将数据加载到缓存中 dataList.forEach(data - { cacheManager.getCache(yourCacheName).put(data.getId(), data); }); } } 实现InitializingBean接口 它只包含一个方法 afterPropertiesSet()。当一个 bean 的所有属性都被 Spring 容器设置之后即通过依赖注入afterPropertiesSet() 方法会被自动调用 import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; Component public class CacheInitializingBean implements InitializingBean { Autowired private YourRepository yourRepository; // 假设你有一个访问数据库的Repository Autowired private CacheManager cacheManager; // 假设你使用Spring Cache进行缓存管理 Override public void afterPropertiesSet() throws Exception { // 在所有属性被设置之后执行此方法 // 从数据库中获取数据并加载到缓存中 ListYourData dataList yourRepository.findAll(); dataList.forEach(data - { cacheManager.getCache(yourCacheName).put(data.getId(), data); }); } } 注使用 InitializingBean 接口与使用 PostConstruct 注解的效果类似但它们在 Spring 生命周期中的调用时机略有不同。PostConstruct 注解的方法是在依赖注入完成后立即调用而 InitializingBean 的 afterPropertiesSet() 方法则是在所有属性被设置之后调用。在大多数情况下这两个选项可以互换使用具体选择哪个取决于你的个人喜好和项目需求。 实现CommandLineRunner接口 CommandLineRunner接口提供了一个run方法该方法会在Spring Boot应用启动后立即执行。 import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; Component public class CacheRunner implements CommandLineRunner { Autowired private YourRepository yourRepository; Autowired private CacheManager cacheManager; Override public void run(String... args) throws Exception { // 从数据库中获取数据并加载到缓存中 ListYourData dataList yourRepository.findAll(); dataList.forEach(data - { cacheManager.getCache(yourCacheName).put(data.getId(), data); }); } } 实现ApplicationRunner接口 ApplicationRunner接口类似于CommandLineRunner但提供了更灵活的参数处理方式 import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; Component public class CacheApplicationRunner implements ApplicationRunner { Autowired private YourRepository yourRepository; Autowired private CacheManager cacheManager; Override public void run(ApplicationArguments args) throws Exception { // 从数据库中获取数据并加载到缓存中 ListYourData dataList yourRepository.findAll(); dataList.forEach(data - { cacheManager.getCache(yourCacheName).put(data.getId(), data); }); } } 使用EventListener注解监听ApplicationReadyEvent事件 Spring Boot在启动完成后会发布一个ApplicationReadyEvent事件你可以监听这个事件并在事件触发时执行加载数据的逻辑。 import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; Component public class CacheInitializer { Autowired private YourRepository yourRepository; Autowired private CacheManager cacheManager; EventListener(ApplicationReadyEvent.class) public void onApplicationReadyEvent() { // 从数据库中获取数据并加载到缓存中 ListYourData dataList yourRepository.findAll(); dataList.forEach(data - { cacheManager.getCache(yourCacheName).put(data.getId(), data); }); } } 需要注意的是加载数据的操作应该尽可能快地完成避免延迟应用的启动时间。如果加载数据量非常大你可能需要考虑异步加载或延迟加载的策略。
http://www.w-s-a.com/news/851362/

相关文章:

  • 做网站推销的如何谈客户wordpress怎么做商城
  • 摄影素材库网站服装页面设计的网站
  • 如何用国外网站做头条做个游戏app的费用大概多少
  • 网站 形象入口页福州网站建设网络公司排名
  • 免费下载教学设计的网站送网站建设管理信息内容审核制度
  • 外贸专业网站的公司百度旗下13个app
  • 物理组简介 网站建设高师院校语言类课程体系改革与建设 教学成果奖申报网站
  • 爱网站无法登录怎么回事手表网
  • 网站建设公司现在还挣钱吗山西手动网站建设推荐平台
  • 重庆建设工程交易信息网站网站制作公司起名
  • 东莞寮步做网站的有吗企业宣传册制作
  • 做网站的软件是哪个上蔡做网站
  • 前后端分离实现网站开发紧急通知网页升级
  • 河北专业网站建设公司推荐佛山小程序开发平台
  • 网站开发强制开启浏览器极速模式建设网站有什么风险
  • 360全景网站建设常州专业网站建设公司咨询
  • 重庆大渡口网站建设网站增加一体化建设功能的好处
  • 网站开发完整视频网站上传 404
  • 自适应网站做推广北京建设工程招标网
  • 外贸网站设计注意事项网上商城官网入口
  • 正规的营销型网站建设公司微官网是网站吗
  • 南京行业门户网站无锡阿里巴巴做网站
  • 河北省和城乡住房建设厅网站wamp wordpress打不开
  • 在哪个平台做网站比较好自动app优化
  • 有没有能帮人快速网站备案的机构个人学做网站
  • 凌云县 城市建设 网站西安市建网站
  • 织梦xml网站地图公众号公众平台
  • 长春省妇幼网站做四维学校网站系统破解版
  • 安阳免费搭建自己的网站个人网站做商城会怎样
  • 网站建设专家公司排行网站举报有奖平台