首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Spring Boot启动时将数据加载到Ehcache 3

在Spring Boot启动时将数据加载到Ehcache 3
EN

Stack Overflow用户
提问于 2019-10-31 11:59:48
回答 1查看 408关注 0票数 1

我希望在Spring Boot应用程序启动时加载缓存中的数据。我知道在Ehcache2中有一种使用BootstrapCacheLoader的集成方法。但是我在Ehcache3中看不到这个。我仍然可以在@postConstruct方法中手动完成。但是我想知道是否有一个集成的解决方案(Spring 5,Ehcache 3)

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-11-01 14:36:10

在初始化Spring上下文之后,我最终完成了这项工作。对于DB集合中的每个元素,我调用带有@Cacheable注释的getResourceById(),从而填充整个DB集合的缓存。

我不推荐在@PostConstruct中运行这段代码,因为代理可能还没有创建,像@Cacheable这样的注解可能还不能工作。

在触发ContextRefreshedEvent事件时运行此代码(在初始化或刷新之后)是加载缓存的更合适位置。

代码语言:javascript
运行
AI代码解释
复制
public class CacheLoader {

private final Logger logger = LoggerFactory.getLogger(CacheLoader.class);

@Autowired
private ResourcePermissionRepository resourcePermissionRepository;
@Autowired
private ResourcePermissionService resourcePermissionService;


@EventListener
public void onApplicationEvent(ContextRefreshedEvent event) {
    logger.info("Loading cache following start/refresh event");
    for (PermissionGroup permissionGroup : permissionGroupRepository.findAll()) {
        permissionGroupService.getGroupById(permissionGroup.getGroupName());
    }

    for(ResourcePermission resourcePermission: resourcePermissionRepository.findAll()) {
        resourcePermissionService.getResourceById(resourcePermission.getResourceId());
    }
    logger.info("Finished loading cache");
}


public class ResourcePermissionService {

private final Logger logger = LoggerFactory.getLogger(ResourcePermissionService.class);

@Autowired
private ResourcePermissionRepository resourcePermissionRepository;


@Cacheable(value = "resources", sync = true)
 public ResourcePermission getResourceById(String resourceId) {
    logger.info("Cache miss for resource " + resourceId);
    return resourcePermissionRepository.findById(resourceId).orElse(new NullResourcePermission());
}

@CachePut(value = "resources", key = "#result.resourceId")
public ResourcePermission addResourcePermission(ResourcePermission resourcePermission) {
    return resourcePermissionRepository.save(resourcePermission);
}

@CacheEvict(value = "resources")
public void deleteById(String resourceId) {
    resourcePermissionRepository.deleteById(resourceId);
}
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58642911

复制
相关文章
Mysql.5.5 从启动到接收command
- servers_init() 初始化 servers 缓存,从servers表中读取,放入到缓存中
马说
2021/07/21
5020
Mysql.5.5 从启动到接收command
从被动到主动,换个角度看DB
近期做了次分享,主题是从被动到主动,换个角度看DB。之所以讲这个题目,是我个人经历多年对数据库的管理,也是经历了这个过程。随着自己对数据库的理解逐步深入,看待数据库的角度也逐步发生变化。走过了从被动式管理,到主动式预防的过程。希望这次的内容,能开阔大家对数据库的思考角度。
用户5548425
2020/09/10
5060
从被动到主动,换个角度看DB
Android从启动到程序运行发生的事情
转载请注明出处  博客地址:http://blog.csdn.net/JonsTank2013/article/details/51118563 作者:李中权
bear_fish
2018/09/19
1.1K0
Android从启动到程序运行发生的事情
js滚动到页面顶部
js平滑滚动到顶部,底部,指定地方 采用锚点进行页面中的跳转的确很方便,但是要想增加网页的效果,可以使用jquery中的animate,实现滚动的一个动作,慢慢的滚动到你想跳转到的位置 滚动到顶部:
IT工作者
2022/01/15
13.5K0
Android Service启动到Activity
从Service启动到Activity基本可以分为两类: 1.从自己应用的Service启动自己应用的Activity,即显式意图; 2.从自己应用的Service启动到其他应用的Activity,或者从别的应用的Service启动到自己应用的Activity,即隐式意图;
程序员飞飞
2020/02/27
3.4K0
js滚动到页面顶部
我们可以使用原生的JavaScript window.scrollTo 传入0,0 将会立即滚动到页面左上角。
用户1349575
2021/12/28
14.5K0
office2010软件下载安装教程--office全版本软件安装包office软件哪个版本好用
在Microsoft Office中,可以使用Outlook应用程序进行邮件管理。
用户7442032
2023/03/14
3.9K0
office2010(Excel/word/PPT)软件--office办公全版本软件下载
在Microsoft Office中,可以使用Outlook应用程序进行联系人管理。
用户7442032
2023/03/14
2.2K0
从自动到无忧 - 探索工业控制中手/自动切换的问题
工业控制中的变频器是现代生产过程中至关重要的组成部分。它们可以通过调整电动机的转速和频率,实现对生产过程的精准控制,从而提高生产效率、降低能源消耗并保护设备。
剑指工控
2023/08/31
3050
从自动到无忧 - 探索工业控制中手/自动切换的问题
Linux操作系统从开机启动到完成详细解析
本文从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤。
苦叶子
2021/10/09
1.1K0
从推动到拉动:研发效能提升的第一性原理
导语 | 随着企业业务的快速发展,产品迭代速度越来越成为企业发展制胜的关键因素。在业务迅速扩张之下,企业研发团队的规模也在不断壮大。如何有效管理研发团队,又该如何提升企业研发效能,让企业在市场竞争中立于不败之地成为了一堂“必修课”。今天,我们特邀了 Agilean 首席顾问、腾讯云 TVP 吴穹老师 ,他将为我们带来软件研发效能提升的经验分享。
腾讯云 CODING
2023/08/08
1740
从推动到拉动:研发效能提升的第一性原理
从推动到拉动:研发效能提升的第一性原理
导语 | 随着企业业务的快速发展,产品迭代速度越来越成为企业发展制胜的关键因素。在业务迅速扩张之下,企业研发团队的规模也在不断壮大。如何有效管理研发团队,又该如何提升企业研发效能,让企业在市场竞争中立于不败之地成为了一堂“必修课”。今天,我们特邀了 Agilean 首席顾问、腾讯云 TVP 吴穹老师 ,他将为我们带来软件研发效能提升的经验分享。
TVP官方团队
2023/07/16
4120
从推动到拉动:研发效能提升的第一性原理
WPF 获取进程启动到当前现在的时间
从应用程序线程创建现在的时间可以通过 Process 类的 StartTime 属性获取,也就是其实这个方法不局限 WPF 可用,任何 dotnet 应用都能此方法
林德熙
2022/08/12
1K0
被小米的智能识物感动到哭
小米手机的相机里,隐藏了一个“智能识物”的AI。你只需要拍摄一张照片,这个AI就能识别出来你拍的是什么。
量子位
2018/09/29
1.3K0
被小米的智能识物感动到哭
RecyclerView滚动到指定位置
1、mLayoutManager private void moveToPosition(int position) { if (position >= 0) { mLayoutManager.scrollToPositionWithOffset(3, 0); } } 2、LinearSmoothScroller mTopSmoothScroller = new TopSmoothScroller(getActivity()); priva
用户9854323
2022/06/25
1.8K0
指定节点滚动到屏幕中间的js
父节点的class是slimScrollDiv 子节点的class是fa-warning 执行这个js
Theone67
2019/11/21
3.5K0
微生物群-肠道-大脑轴:从运动到情绪
脑肠轴在维持体内平衡中起着重要作用。许多内在和外在信号影响因子通过脑肠轴调节肠道和中枢神经系统的功能。最近,微生物群落作为调节肠脑信号传导的重要作用已经显现,微生物-肠道-脑轴的概念已经提出。本文描述了微生物脑肠轴在调节肠道和中枢神经系统功能中的作用,以及如何影响肠易激综合征、情绪和情感障碍等疾病。本文还研究了支撑这些疾病的重叠生物学结构,特别强调了神经递质血清素,它在胃肠道和大脑中都起着关键作用。尽管动物研究已经显示出很大的前景,但在这些发现转化为患者群体的诊断和治疗益处之前,还需要更多研究成果。本文发表在Gastroenterology杂志。
用户1279583
2022/06/13
1.1K0
微生物群-肠道-大脑轴:从运动到情绪
请问如何解决chrome在手机模式下在鼠标移动到页面区域就消失?
当然,如果不看知乎,那么就看解决方案吧,问题会出现在Nvida和Intel的显卡上
用户2353021
2020/05/12
4910
滑动到底部无限加载的实现
我们常常会碰到数据条数很多,需要分页显示的情况。对于移动端页面,我们一般会用每次滚动到接近页面底部时,加载更多(下一页)数据的方式。本文就来介绍下滑动到底部无限加载的实现。
前端GoGoGo
2018/08/24
1.8K0
将直播视频质量控制从广播设施移动到家庭
直播已经成为迪士尼流媒体服务(DSS)视频技术的一个组成部分。DSS 有多个团队,其主要功能是保持尽可能高的视频质量,并且内容传输技术正在全天候运作。为了做到这一点,DSS 在旧金山和纽约建立和配备了传输操作中心(TOCs),提供了最先进的视频监控系统,允许 TOC 工作人员查看和执行数千个基于 IP 的流中的任何一个的质量控制。
用户1324186
2022/02/18
3590
将直播视频质量控制从广播设施移动到家庭

相似问题

在angularjs中!$pristine和$dirty有什么不同?

30

AngularJS嵌套指令$pristine和$dirty设置

10

$dirty、$pristine在AngularJS中是否仅用于表单?

21

AngularJS表单保留$dirty手动设置每个输入$pristine

18

$dirty && $pristine不能正常工作

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档