跟着JHipster学做项目 (10) 缓存的应用

Jhipster学习系列(一) 目录:1、jhipster简介2、jhispter生成单体项目3、jhipster生成微服务项目及其配置一、jhipster简介JHipster或者称Java Hipster,是一个应用代码产生器,能够创建Spring Boot +AngularJS的应用。开源项目地址:JHipster/Github。JHipster使用Node.js和Yeoman产生Java应用代码,使用Maven(Gradl... 阅读详情

JHipster对于缓存的应用有两个层级,一种是对于DTO的缓存,另外是Hibernate第二级缓存。本文着重介绍第一种,对于DTO层的缓存。

在应用程序中往往需要对登录用户信息进行多次查询,比如验证用户的状态等等,将用户DTO放进缓存,会大大减少对数据库的访问。

JHipster支持五种缓存实现: Ehcache, Caffeine, Hazelcast, Infinispan and Memcached。以Ehcache为例,首先引入依赖

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-cache</artifactId>
		</dependency>
        <dependency>
            <groupId>javax.cache</groupId>
            <artifactId>cache-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.ehcache</groupId>
            <artifactId>ehcache</artifactId>
        </dependency>

缓存配置代码如下:默认配置缓存对象1小时,最大缓存对象数目为100

@Configuration
@EnableCaching
public class CacheConfiguration {

    private final javax.cache.configuration.Configuration<Object, Object> jcacheConfiguration;

    public CacheConfiguration(JHipsterProperties jHipsterProperties) {
        JHipsterProperties.Cache.Ehcache ehcache = jHipsterProperties.getCache().getEhcache();

        jcacheConfiguration = Eh107Configuration.fromEhcacheCacheConfiguration(
            CacheConfigurationBuilder.newCacheConfigurationBuilder(Object.class, Object.class,
                ResourcePoolsBuilder.heap(ehcache.getMaxEntries()))
                .withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofSeconds(ehcache.getTimeToLiveSeconds())))
                .build());
    }


    @Bean
    public JCacheManagerCustomizer cacheManagerCustomizer() {
        return cm -> {
            createCache(cm, UserRepository.USERS_BY_USER_NAME_CACHE);
        };
    }

    private void createCache(javax.cache.CacheManager cm, String cacheName) {
        javax.cache.Cache<Object, Object> cache = cm.getCache(cacheName);
        if (cache == null) {
            cm.createCache(cacheName, jcacheConfiguration);
        }
    }

}

通过以上配置,只需在repository类中添加@Cacheable注解,便实现缓存处理,代码如下:

    String USERS_BY_USER_NAME_CACHE = "usersByUserName";
    
    @Cacheable(cacheNames = USERS_BY_USER_NAME_CACHE)
	Optional<ApplicationUser> findByUserName(String userName);

实现缓存以后需要注意,任何对用户信息产生变更的操作(通常位于UserService中),需要对缓存进行处理:例如

public Optional<User> activateRegistration(String key) {
        log.debug("Activating user for activation key {}", key);
        return userRepository.findOneByActivationKey(key)
            .map(user -> {
                // activate given user for the registration key.
                user.setActivated(true);
                user.setActivationKey(null);
                userRepository.save(user);
                this.clearUserCaches(user);
                log.debug("Activated user: {}", user);
                return user;
            });
    }
    
private void clearUserCaches(User user) {
            
 Objects.requireNonNull(cacheManager.getCache(UserRepository.USERS_BY_USER_NAME_CACHE)).evict(user.getUserName());

    }

Good Luck,

Cheers!

 

 

jHipster开发笔记,中文版 jHipster开发笔记,详细描述使用jHipster生成微服务的过程 立即下载

相关推荐

FFTW多核优化避坑指南:从交叉编译到ELF2板载OpenMP部署全流程

本文详细介绍了在ELF2开发板(RK3588平台)上为FFTW库配置OpenMP多核并行的完整流程与避坑指南。内容涵盖从交叉编译、库依赖处理到板载部署的实战步骤,并深入分析了RK3588的big.LITTLE架构对线程调优的影响,帮助开发者在嵌入式环境中高效利用多核性能。

2a4s6d8f0g的博客 269

jhipster使用简明教程

1.简介 jhipster简单来说是一个基于nodejs+yeoman的java代码生成器。往大了说是基于java的一套微服务解决方案。请注意是一整套的微服务解决方案。jhipster在整个程序架构上都做好了整合,包括前端mvvm框架(angularjs),前端构建工具(gulp)到后端的微服务框架(spring cloud)和hibernate/mongodb,再到单元测试/ui测试。 ...

大树叶 技术专栏 9494

STM32F103跑LVGL,用DMA加速刷屏,800*480大屏也能丝滑

本文详细介绍了如何在STM32F103芯片上通过DMA加速和内存优化,实现800*480大屏的LVGL流畅运行。通过FSMC+DMA硬件架构优化、双缓冲机制和LVGL参数调优,显著提升了界面刷新率和响应速度,适用于嵌入式GUI开发中的高性能需求场景。

weixin_30357231的博客 376

JHipster - 常用应用程序属性

JHipster生成一个Spring Boot应用程序,并且可以使用标准的Spring Boot属性机制进行配置。 这些属性由JHipster在生成时配置,并且在开发和生产模式中通常具有不同的值:在我们的配置文件文档中了解更多信息。 在JHipster应用程序中,有三种属性: Spring Boot标准应用程序属性 JHipster应用程序属性 应用程序特定的属性 Spring B...

cnhome的专栏 2416

图解电动汽车:电动汽车电控系统

电动汽车的电控系统通常包含三个子控制系统 —— 整车控制器、电池管理系统、驱动电机控制器。 整车控制器 VCU 整车控制器 VCU(Vehicle Control Unit)作为电动汽车的中央控制单元,是整个控制系统的核心,也是各个子系统的调控中心。VCU 的主要功能就是协调管理整车的运行状态,包括采集电机及电池状态,采集加速踏板信号、制动踏板信号、执行器及传感器信号,根据驾驶员的意图综合分析做出相应判定后,监控下层的各部件控制器的动作,它负责汽车的正常行驶、制动能量回馈、整车发动机及动力电池的能量管理、.

程序员「阿基米东」的编程之旅 1万+

【华为OD机试真题】282、求满足条件的最长子串的长度 | 机试真题+思路参考+代码分析 (C++、Java、Py、C语言、JS)

题目描述 >给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度,字符串本身是其最长的子串,子串要求: >  1、只包含1个字母(a~ z,A~Z), 其余必须是数字; 2、字母可以在子 串中的任意位置; >  如果找不到满足要求的子串,如全是字母或全是数字,则返回-1

KJ.JK 1万+

jhipster 安装使用

jhipster 安装使用 1.安装 依赖环境:Java 8 SDK、Maven Windows 8 和 10: 要用有管理员权益的命令提示符 (cmd) ios 和 Linux 用终端 terminal,用管理员权益安装(sudo)

暴走的皮皮虾博客 1940

【网络安全 | 渗透工具】Githack工具安装及使用教程详析

本文仅分享Githack工具基本安装及使用相关知识不承担任何法律责任。Git是一个非常流行的开源分布式版本控制系统,它被广泛用于协同开发和代码管理。许多网站和应用程序都使用Git作为其代码管理系统,并将其部署到生产环境中以维护其代码库。然而,在配置不当的情况下,可能会导致.git文件夹被直接部署到线上环境中,这可能会导致Git泄露问题。可通过githack下载泄露的Git存储库,以获取包含未加密密码、凭据和敏感信息的站点代码库。使用githack下载Git存储库的方法有两种。本文仅分享。

等风来 3万+

jHispter的入门

环境:JDK8 Docker 官网:https://www.jhipster.tech/installation/ 目前有6种方式,以下仅docker 安装jhispter 1.拉取最新的Jhipster Docker镜像: docker image pull jhipster/jhipster ...

young1991的博客 336

【QNX+Android虚拟化方案】12 - 设备虚拟化 之 Passthrough透传、Vdev Trap、HAB Socket 原理解析

【QNX+Android虚拟化方案】12 - 设备虚拟化 之 Passthrough透传、Vdev Trap、HAB Socket 原理解析

|~~~热爱生活、努力学习的小伙汁~~~| 1370

【信息系统项目管理师】高分论文:论信息系统项目的整合管理(绩效考核系统)

我们将项目管理计划中的子计划包括项目范围、进度、成本、质量管理计划,过程改进计划,人力资源管理计划,风险、采购管理计划,干系人管理计划,项目范围、成本、进度基准作为依据,查看项目的各个方面,通过组织全体团体成员会议来解读由各监控过程提供的信息,之后我与项目管理团队一起制订所需措施,确保项目绩效达到预期要求。在一个项目中,变更是必然的,也是不可避免的,进度拖延,成本失控,客户有新的需求等都会引起项目的变更。在本项目中,我要求有处于工作状态的产品,开发人员才可以对其任意修改,修改完成后,重新入库即可。

数据知道的博客 6886

阿敦软件技术框架-跟着JHipster学做项目专栏

跟着JHipster学做项目(1)- MockMvc用法技巧 跟着JHipster学做项目(2) - 使用Swagger2生成API文档 (上)生成swagger的asciidoc文件 跟着JHipster学做项目(3) - Maven的使用技巧(上)分离jar和依赖 跟着JHipster学做项目(3) - Maven的使用技巧(下)去掉因lifecycle引起的红叉 跟着JHipster学做项目 (4)审计功能 跟着JHipster学做项目 (5) 异常处理(上)Spring Boot后端 跟

java_augur的专栏 4540

OpenClaw零基础教程:30分钟搭建你的第一个AI自动化助手

别再看那些满是代码、专业术语的教程了,那些都是给程序员看的。这篇教程,我把所有步骤拆到了极致,你跟着点鼠标就行,点错了都没关系,大不了重装一遍,5分钟的事。

2601_94871597的博客 96

跟着JHipster学做项目 (11) stream和Optional的使用

JHipster在java代码中大量运用stream和Optional,使得代码简洁,运行效率高,下面总结了一些用例,基本涵盖了我们项目日常遇见的需求。 在数据库中查询用户,如果存在,利用数据库查询结果计算并返回,若不存在抛出异常(或返回其它结果)。 public UserDetails loadUserByUsername(final String login) { return userRepository.findOneByLogin(lowercaseLogin)

java_augur的专栏 520

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

使用JHipster创建springboot单体应用

网址 https://www.jhipster.tech/cn/ 安装 系统:win10 npm install -g generator-jhipster 创建单应用项目 mkdir myapplication cd myapplication/ jhipster 语句解释 Monolithic application (recommended for simple projects) 就是最常见的单体应用,区别于微服务而言的。对于简单应用来说,最容易创建和开发,所以也是推荐的选项。(如

小小天下飞的博客 1739

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

用最低成本支持 IE8/IE9:aight 条件加载与按需构建实践

内网 OA、老版企业系统里往往还有一批 IE8/IE9 用户。aight 是面向这批浏览器的 JavaScript 垫片集合,是 IE8/IE9 兼容与旧版 IE 性能优化的手段:通过条件加载和按需构建,它只补齐旧版 IE 缺失的 ES5 与 DOM 能力,把加载和执行开销压到最低。 ## 📌 一、项目定位:aight 只补指定 API,不做浏览器模拟 aight 的边界很明确:只补齐指定

gitblog_00867的博客 314

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jhipster学习心得

Jhipster初识本文基于自己根据jhipster的初次接触,write down下一些笔记心得,以及一些操作步骤。一、Jhipster介绍1.大神语录 一个代码生成器而已 核心是Spring Boot、spring对j2ee企业解决方案的提供、AnjularJs。(掌握这些是必不可少的)。 未来spring和spring提供的所有解决方案就是j2ee的趋势和核心。 Yeoman要懂跟Spring

东方一号蓝的博客 1万+

跟着JHipster学做项目 (13) 控制Vue前端在完成加载数据后展现页面

对于用Vue开发的前端页面,通常采用Ajax进行数据通讯,页面的控件往往存储在本地。我们直观的感觉是页面组件出现后,数据再显示在组件上,如果网络有延迟,数据滞后显示会更加明显。更严重的情况是上次缓存的数据会出现在页面,对用户造成困扰。 下面就讲述一下JHipster的两种方式实现数据加载完成后,再展现页面。 利用beforeRouteEnter,代码如下: beforeRouteEnter(to, from, next) { next(vm => { vm.initAu

java_augur的专栏 610

Jhipster初识

Jhipster初识 本文基于自己根据jhipster的初次接触,write down下一些笔记心得,以及一些操作步骤。 一、Jhipster介绍 1.大神语录 一个代码生成器而已核心是Spring Boot、spring对j2ee企业解决方案的提供、AnjularJs。(掌握这些是必不可少的)。未来spring和spring提供的所有解决方案就是j2ee的趋势和核心。Ye

mark's technic world 631

JHipster介绍:一个适用于Java和JavaScript的全栈框架

JHipster是一个用于生成混合Java和JavaScript应用程序的成熟框架,它支持你所喜爱的开发工具,并提供监控和其他开箱即用的管理功能。JHipster是一个历史悠久、雄心勃勃的Java和JavaScript混合项目,致力于使用现代反应式前端来简化全栈Java应用程序的开发。JHipster开发团队持续发布新版本,以跟上行业变化。让我们通过构建一个简单的应用程序来了解这个框架能做什么。开箱即用,JHipster在前端支持React、Vue和Angular。基于JPA的关系型数据存储,其中。...

Q54665642ljf的博客 1998

聊聊Jhipster,强烈推荐Java开发看看,节省很多时间

为什么想聊聊Jhipster呢?Jhipster我用了将近半年了,说说一些感受吧。 为什么要用Jhipster呢?Leader让用的呗,我开始用真的是不习惯,生成一堆文件,好多依赖,都不知道是干啥的。没办法啊,我又不是Leader,技术选型还轮不到我说了算,不习惯也要用啊,网上也找了相关资料,说真的,都不是很全。下面我们来聊聊Jhipster吧,你们可以去官网看看。 有些博主这方面讲的还是很不错的,如:zhuanlan.zhihu.com/c_100829618… Jhipster的官网:www.jh

欢迎来到我的博客 5755

SpringBoot2.7.X集成Ehcache3缓存,编码配置和XML配置

使用第三方缓存Ehcache3;这里的重点是编码配置,因为编码配置有两种,springboot 自带的JCacheManagerCustomizer进行集成,另一种是直接使用org.ehcache.CacheManage进行配置Ehcache2 和 Ehcache3 是不同的。

zyyxiaoxiao的博客 4496

JHipster技术栈定制 - 基于UAA的微服务之间安全调用

本文通过代码实例演示如何通过UAA实现微服务之间的安全调用。 uaa: 身份认证服务,同时也作为被调用的资源服务。服务端口9999。 microservice1: 调用uaa的消费者服务,服务端口8081。 1 准备工作 1.1 工程目录 --| appstack |-- uaa |-- microservice1 1.2 启动相关组件 为了简单起见,这里都使用容器启动相关组件,需要2...

weixin_33778778的博客 996

JHispter的安装、使用

前言参考:https://jhipster.github.io/installation 后台服务只生成带UAA的微服务 前端我们使用Angular,不使用AngularJS安装本地安装(yarn方式) Install Java 8 from the Oracle website. (Optional) Install a Java build tool. Whether you choose

bob的专栏 3475

Jhipster之JWT认证解析

1.token生成 在用户登录时,请求/api/authenticate,Controller中注入AuthenticationManager用于验证用户名和密码是否正确,验证通过使用tokenProvider创建token并返回给前端 @PostMapping("/authenticate") @Timed public ResponseEntity&lt;JWTToken&gt; a...

york_饭的博客 2236
上一篇: 跟着JHipster学做项目 (9) 处理用户登录超期
下一篇: 跟着JHipster学做项目 (11) stream和Optional的使用
java_augur
博客等级 码龄22年 67粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值