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

庄辉个人网站建设教学哈尔滨关键词排名工具

庄辉个人网站建设教学,哈尔滨关键词排名工具,苏州代理注册公司哪家好,网站建设南宁Spring Cache spring cache是一个框架,实现类基于注解的缓存功能,只需要简单的加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。 spring cache只是提供了一层抽象,底层可以切换不同的cache实现&am…

Spring Cache

spring cache是一个框架,实现类基于注解的缓存功能,只需要简单的加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。

spring cache只是提供了一层抽象,底层可以切换不同的cache实现,具体就是通过cacheManager接口来统一不同的缓存技术。CacheManager是spring提供的各种缓存技术抽象接口。

针对不同的缓存技术需要实现不同的cacheManager

CacheManager描述
EhCacheCacheManager使用EhCache作为缓存技术
GuavaCacheManager使用Google的GuavaCache作为缓存技术
RedisCacheManager使用Redis作为缓存技术

注解

在SpringCache中提供了很多缓存操作的注解,常见的是以下的几个:

注解说明
@EnableCaching开启缓存注解功能
@Cacheable在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中
@CachePut将方法的返回值放到缓存中
@CacheEvict将一条或多条数据从缓存中删除

在spring boot项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用**@EnableCaching**开启缓存支持即可。使用Redis作为缓存技术,只需要导入Spring data Redis的maven坐标即可。

框架使用步骤:

导入pom文件

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

配置Redis的key的序列化器

// com.atguigu.spzx.cache.config;
@Configuration
public class RedisConfig {@Beanpublic CacheManager cacheManager(LettuceConnectionFactory connectionFactory) {//定义序列化器GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()//过期时间600秒.entryTtl(Duration.ofSeconds(600))// 配置序列化.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(stringRedisSerializer)).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(genericJackson2JsonRedisSerializer));RedisCacheManager cacheManager = RedisCacheManager.builder(connectionFactory).cacheDefaults(config).build();return cacheManager;}}

3、在启动类上添加**@EnableCaching**注解

4、方法上添加**@Cacheable**注解

@Cacheable

1.作用:在方法执行前,spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据,若没有数据,调用方法并将方法返回值放到缓存中。

2.value:缓存的名称,每个缓存名称下面可以有多个key

3.key:缓存的key 支持spring的表达式语言SPEL语法

Spring 表达式语言(SpEL)

是一种在 Spring 框架中使用的表达式语言,它提供了一种在运行时对对象图进行查询和操作的强大方式。SpEL 的语法相对简洁且易于使用,其主要特点包括:

  1. 引用对象属性:使用 #{} 将属性名包裹起来,如 #{user.name} 表示引用了 user 对象的 name 属性。
  2. 引用集合元素:使用 [] 语法引用集合中的元素,如 #{userList[0]} 表示引用了 userList 集合的第一个元素。
  3. 调用方法:可以使用 . 语法调用对象的方法,如 #{user.getName()} 表示调用了 user 对象的 getName() 方法。
  4. 运算符:支持常见的数学运算符(+, -, *, /)以及逻辑运算符(and, or, not)等。
  5. 条件运算:支持三元条件运算符 condition ? trueValue : falseValue
  6. 正则表达式匹配:使用 matches 关键字进行正则表达式匹配。
  7. 集合选择:通过 . 语法对集合进行筛选,如 #{userList.?[age > 18]} 表示从 userList 中选择年龄大于 18 的用户。
  8. 投影运算:使用 . 语法对集合进行投影操作,如 #{userList.![name]} 表示从 userList 中提取所有用户的 name 属性。
  9. Ternary 操作符:类似 Java 中的 ?: 操作符,用于条件判断。
  10. 安全导航运算符:使用 ?. 来避免 NPE(NullPointerException),如果属性为空,则不会抛出异常。

这些是 SpEL 中的一些主要语法特点,它提供了灵活而强大的功能,可以在 Spring 中的诸多场景下使用,如注解、配置文件、XML 配置等。 SpEL 的语法规则相对简洁清晰,使得开发者能够轻松地在 Spring 应用中进行对象图的操作和查询。

//首先根据key查询redis中的值并返回  如果redis中没有值,则返回当前方法返回的对象
@Override
@Cacheable(value = "userCache",key = "#userId")
public User findById(Long userId){User user = new User();user.setAge(18);return user;
}

@CachePut

作用:将方法返回值,放入缓存

value:缓存的名称,每个缓存名称下面可以有很多key

key: 缓存的key 支持spring的表达式语言SPEL语法

当前UserController的save方法是用来保存用户信息的,我们希望在该用户信息保存到数据库的同事,也在缓存中缓存一份数据,我们可以在save方法上加上注解@CachePut,用法如下:

@CachePut(value = "userCache",key = "#user.userName")
public User saveUser(User user){return user
}

key的写法如下:

#user.id: #user指的是方法形参的名称,id指的是user的id属性,也就是使用user的id属性作为key

#user.userName: #user指的是方法形参的名称,name指的是user的name属性,也就是使用user的name属性作为key

#result.id: #result代表方法返回值,该表达式代表以返回对象的id属性作为key

#result.userName:#result代表方法返回值,该表达式代表以返回对象的name属性作为key

@CacheEvit

作用:清理指定缓存

value:缓存的名称,每个缓存名称下面可以有多个key

key:缓存的key —>支持spring的表达式语言SPEL语法

当我们在删除数据库user表的数据的时候,我们需要删除缓存中对应的数据,此时就可以使用@CahceEvit注解,具体使用方式如下:

@CacheEvit(value = "userCache", key = "#userId")
public void deleteById(Long userId){log.info("用户数据删除成功....")
}
http://www.hkea.cn/news/695381/

相关文章:

  • 无锡网站建设有限公司网站快速收录的方法
  • 网站建设通报推广网站多少钱
  • 网络推广公司成都seo排名优化教程
  • 一台手机登录微信网页版西安优化外
  • 如何做旅游攻略网站长沙seo优化推荐
  • 长春火车站电话咨询电话快排seo
  • 龙城建设网站公司网站内容优化方法
  • 南通网站建设搭建网站卖链接
  • 驻马店市做网站seo臻系统
  • 找公司做网站怎么图片都要自己找百度推广官网电话
  • 网站小样用什么做seo外链平台热狗
  • 建站点的步骤sem是什么
  • 深圳专业做网站的衡水网站优化推广
  • 徐汇科技网站建设2345中国最好的网址站
  • 邢台论坛吧百度seo收录软件
  • 做国外服务器网站吗怎么让百度搜索靠前
  • 做动态图网站有哪些自建站怎么推广
  • web网站开发课程设计报告seo技术培训沈阳
  • 会宁网站建设公司网站优化助手
  • 网站设计制作体会2023年5月最新疫情
  • 月亮湾设计有限公司网站南宁seo产品优化服务
  • 福田欧曼服务站电话上海高端seo公司
  • 高端网站建设哪家好谷歌seo和百度seo
  • 前端写一个页面多少钱海口网站关键词优化
  • 浦东新区建设局官方网站东莞seo关键词
  • 在百度做橱柜网站进入百度一下官网
  • wordpress调用分类标签站长工具查询seo
  • 网站做全局搜索云南新闻最新消息今天
  • 公司网站推广方案长春seo代理
  • 网站地图怎么样做更利于收录手机百度搜索引擎入口