SpringBoot中实现默认缓存的方法

  介绍

小编给大家分享一下SpringBoot中实现默认缓存的方法,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!

在上一节中,我带大家学习了在弹簧启动中对缓存的实现方案,尤其是结合弹簧缓存的注解的实现方案,接下来在本章节中,我带大家通过代码来实现。

<强> 1。创建网络项目

我们按照之前的经验,创建一个web程序,并将之改造成弹簧启动项目,具体过程略。

 SpringBoot中实现默认缓存的方法

<强> 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中实现默认缓存的方法