怎么做网站子页,企业创建网站的途径都有啥,金溪那里可以做网站,wordpress目的什么是Spring Cache#xff1f;
Spring Cache是Spring框架的一个模块#xff0c;它提供了对应用程序方法级别的缓存支持。通过使用Spring Cache#xff0c;您可以在方法的结果被计算后#xff0c;将其缓存起来#xff0c;从而避免相同输入导致的重复计算。
Spring Cache…什么是Spring Cache
Spring Cache是Spring框架的一个模块它提供了对应用程序方法级别的缓存支持。通过使用Spring Cache您可以在方法的结果被计算后将其缓存起来从而避免相同输入导致的重复计算。
Spring Cache的工作原理
Spring Cache基于注解的方式工作。当您在方法上添加了Spring Cache提供的缓存注解后Spring会在执行方法前先检查缓存中是否已经存在了方法的返回值。如果缓存中已经有了结果那么Spring将直接从缓存中获取返回值并且不会再执行实际的方法体。如果缓存中没有结果Spring会执行方法的实际逻辑并将返回值存储到缓存中以备将来使用。
Spring Cache支持各种缓存提供商例如Ehcache、Caffeine、Redis等您可以根据需求来选择合适的缓存实现。
Spring Cache的常用注解 EnableCaching : 开启缓存注解功能通常加在启动类上 CachePut: 该注解也标记在方法上用于指示方法的结果应该被缓存但是它在每次调用后都会执行方法体并将返回值更新到缓存中。 CacheEvict: 该注解标记在方法上用于从缓存中移除一个或多个条目。可以指定多个缓存名称或者缓存键当方法执行时相关的缓存条目将被从缓存中清除。 Cacheable: 在方法执行前先查询缓存中是否有数据如果有数据则直接返回缓存数据如果没有缓存数据调用方法并将方法返回值放到缓存中
Spring Cache的使用场景
Spring Cache非常适合以下情况
频繁访问数据库或其他资源通过缓存避免重复查询计算成本较高的方法通过缓存避免重复计算实时性要求不高的数据例如配置信息等一些通用且不经常改变的数据例如地区信息、常量等。
起步依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-cacheartifactIdversion2.7.3/version
/dependency入门案例
数据库准备:
创建名为spring_cache_demo数据库将springcachedemo.sql(如下)脚本直接导入数据库中。
DROP TABLE IF EXISTS user;
CREATE TABLE user (id bigint NOT NULL AUTO_INCREMENT,name varchar(45) DEFAULT NULL,age int DEFAULT NULL,PRIMARY KEY (id)
);引导类上加EnableCaching:
package com.itheima;Slf4j
SpringBootApplication
EnableCaching//开启缓存注解功能
public class CacheDemoApplication {public static void main(String[] args) {SpringApplication.run(CacheDemoApplication.class,args);log.info(项目启动成功...);}
}CachePut注解
CachePut 说明 作用: 将方法返回值放入缓存 value: 缓存的名称, 每个缓存名称下面可以有很多key key: 缓存的key ---------- 支持Spring的表达式语言SPEL语法 在save方法上加注解CachePut 当前UserController的save方法是用来保存用户信息的我们希望在该用户信息保存到数据库的同时也往缓存中缓存一份数据我们可以在save方法上加上注解 CachePut用法如下 /*** CachePut将方法返回值放入缓存* value缓存的名称每个缓存名称下面可以有多个key* key缓存的key*/PostMappingCachePut(value userCache, key #user.id)//key的生成userCache::1public User save(RequestBody User user){userMapper.insert(user);return user;}说明: #user.id 常用: #user指的是方法形参的名称, id指的是user的id属性 , 也就是使用user的id属性作为key ; #result.id : #result代表方法返回值该表达式 代表以返回对象的id属性作为key #p0.id#p0指的是方法中的第一个参数id指的是第一个参数的id属性,也就是使用第一个参数的id属性作为key ; #a0.id#a0指的是方法中的第一个参数id指的是第一个参数的id属性,也就是使用第一个参数的id属性作为key ; #root.args[0].id:#root.args[0]指的是方法中的第一个参数id指的是第一个参数的id属性,也就是使用第一个参数的id属性作为key ; Cacheable
Cacheable 说明: 作用: 在方法执行前spring 先查看缓存中是否有数据如果有数据则直接返回缓存数据若没有数据调用方法并将方法返回值放到缓存中 cacheNames: 缓存的名称每个缓存名称下面可以有多个key key: 缓存的key ---------- 支持Spring的表达式语言SPEL语法 在getById上加注解Cacheable
/**
* Cacheable在方法执行前spring先查看缓存中是否有数据如果有数据则直接返回缓存数据若没有数据 *调用方法并将方法返回值放到缓存中
* cacheNames缓存的名称每个缓存名称下面可以有多个key
* key缓存的key
*/
GetMapping
Cacheable(cacheNames userCache,key#id)
public User getById(Long id){User user userMapper.getById(id);return user;
}CacheEvict
CacheEvict 说明 作用: 清理指定缓存 cacheNames: 缓存的名称每个缓存名称下面可以有多个key key: 缓存的key ---------- 支持Spring的表达式语言SPEL语法 在 delete 方法上加注解CacheEvict
DeleteMapping
CacheEvict(cacheNames userCache,key #id)//删除某个key对应的缓存数据
public void deleteById(Long id){userMapper.deleteById(id);
}DeleteMapping(/delAll)
CacheEvict(cacheNames userCache,allEntries true)//删除userCache下所有的缓存数据
public void deleteAll(){userMapper.deleteAll();
}