介绍
小编给大家分享一下SpringBoot中实现默认缓存的方法,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!
在上一节中,我带大家学习了在弹簧启动中对缓存的实现方案,尤其是结合弹簧缓存的注解的实现方案,接下来在本章节中,我带大家通过代码来实现。
<强> 1。创建网络项目强>
我们按照之前的经验,创建一个web程序,并将之改造成弹簧启动项目,具体过程略。
<强> 2。添加依赖包强>
& lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-data-jpa & lt;/dependency> & lt; dependency> & lt; groupId> mysql & lt; artifactId> mysql-connector-java & lt;/dependency> & lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-cache & lt;/dependency>
<强> 3。创建应用程序。yml配置文件强>
服务器: 端口:8080 春天: 应用程序: 名称:cache-demo 数据源: driver-class-name: com.mysql.cj.jdbc.Driver 用户名:根 密码:syc url: jdbc: mysql://localhost: 3306/spring-security& # 63; useUnicode=true& characterEncoding=utf8& characterSetResults=utf8& useSSL=false& serverTimezone=UTC #缓存: #类型:通用#由复述,进行缓存,一共有10种缓存方案 jpa: mysql数据库: show-sql:真#开发阶段,打印要执行sql语的句。 hibernate: ddl-auto:更新
<强> 4。创建一个缓存配置类强>
主要是在该类上添加@EnableCaching注解,开启缓存功能。
包com.yyg.boot.config; 进口org.springframework.cache.annotation.EnableCaching;/* * * @Author一一哥 * @Date 2020/4/14创造出来的 * @Description描述 * EnableCaching启用缓存 */@ configuration @EnableCaching 公开课CacheConfig { }
<强> 5。创建用户实体类强>
包com.yyg.boot.domain; 进口lombok.Data; 进口lombok.ToString; 进口javax.persistence。*; 进口java.io.Serializable; @ entity @ table (name=皍ser") @ data @ToString 公开课用户实现了Serializable {//IllegalArgumentException: DefaultSerializer需要一个可序列化的负载//但收到一个类型的对象(com.syc.redis.domain.User) @ id @GeneratedValue(策略=GenerationType.AUTO) 私人长id; @ column 私人字符串的用户名; @ column 私人密码字符串; }
<>强6。创建用户仓库类强>
包com.yyg.boot.repository; 进口com.yyg.boot.domain.User; 进口org.springframework.data.jpa.repository.JpaRepository; 公共接口UserRepository延伸JpaRepository<用户,Long>{ }
<强> 7。创建服务服务类强>
<强>定义UserService接口强>
包com.yyg.boot.service; 进口com.yyg.boot.domain.User; 公共接口UserService { 用户findById (id); 用户保存用户(用户); 空白deleteById (id)长; }
<>强实现UserServiceImpl类强>
包com.yyg.boot.service.impl; 进口com.yyg.boot.domain.User; 进口com.yyg.boot.repository.UserRepository; 进口com.yyg.boot.service.UserService; 进口org.springframework.beans.factory.annotation.Autowired; 进口org.springframework.cache.annotation.CacheEvict; 进口org.springframework.cache.annotation.CachePut; 进口org.springframework.cache.annotation.Cacheable; 进口org.springframework.stereotype.Service; @ service 公共类UserServiceImpl实现UserService { @ autowired 私人UserRepository UserRepository;//普通的缓存+数据库查询代码实现逻辑://用户用户=RedisUtil.get(关键);//如果(用户==null) {//user=userDao.findById (id);////复述的关键=皃roduct_item_" + id//RedisUtil.set(关键用户);//}//返回用户;/* * *注解@Cacheable:查询的时候才使用该注解! *注意:在缓存注解中支持EL表达式 *复述,缓存的关键=user_1/2/3 .... *复述的缓存雪崩,缓存穿透,缓存预热,缓存更新… *条件=? ne null"结果,条件表达式,当满足某个条件的时候才进行缓存 *除非=? eq null"结果:当用户对象为空的时候,不进行缓存 */@Cacheable(值=https://www.yisu.com/zixun/坝没А?键=" # id ",除非=" #结果eq零”) @Override 公共用户findById (id) { 返回userRepository.findById (id) .orElse(空); }/* * *注解@CachePut:一般用在添加和修改方法中 *既往数据库中添加一个新的对象,于此同时也往复述,缓存中添加一个对应的缓存。 *这样可以达到缓存预热的目的。 */@CachePut(值=坝没А?键=" #结果。id”,除非=" #结果eq零”) @Override 公共用户保存用户(用户){ 返回userRepository.save(用户); }/* * * CacheEvict:一般用在删除方法中 */@CacheEvict(值=坝没А?键=" # id”) @Override 公共空间deleteById (id) { userRepository.deleteById (id); } }SpringBoot中实现默认缓存的方法