解释SpringBoot之Ehcache 2.x缓存

介绍

这里介绍Ehcache 2.X 缓存

添加基本的web项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mbNARxlj-1592666394129)(https://www.iming.info/wp-content/uploads/2020/06/wp_editor_md_a364d1423e3bdfc4066b7266a02a2393.jpg)]

添加Ehcache 依赖



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.1.RELEASE
         
    
    com.example
    demo
    0.0.1-SNAPSHOT
    demo
    Demo project for Spring Boot

    
        1.8
    

    
        
        
            org.springframework.boot
            spring-boot-starter-cache
            2.3.1.RELEASE
        
        
        
            net.sf.ehcache
            ehcache
            2.10.6
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



添加配置文件

添加ehcache 配置缓存文件
解释SpringBoot之Ehcache 2.x缓存_第1张图片


    
    
    



注解上开启缓存

在启动类上添加相关的注解

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;

@SpringBootApplication
@EnableCaching
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

使用缓存

创建实体类和BookService

创建实体类

package com.example.demo;

import java.io.Serializable;

public class Book implements Serializable {
    private Integer id;
    private String name;
    private String author;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
}

解释SpringBoot之Ehcache 2.x缓存_第2张图片

添加相关的service

package com.example.demo;

import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Repository;

@Repository
// 使用缓存的名称
@CacheConfig(cacheNames = "book_cache")
public class BookDao {
    // 对该方法进行缓存
    @Cacheable
    public Book getBookById(Integer id){
        System.out.println("调用Service方法");
        Book book = new Book();
        book.setAuthor("ming");
        book.setId(id);
        book.setName("ming");
        return book;
    }

    @CachePut(key = "#book.id")
    // 用在更新方法上,数据库数据更新,缓存数据也要更新,方法的返回值自动更新在已经保存的key上
    public Book updateBookById(Book book){
        System.out.println("更新ById");
        book.setName("ming2");
        return book;
    }
    
    @CacheEvict(key = "#id")
    // 用在删除方法上,数据删除以后,其方法也会删除
    public void deleteBookById(Integer id){
        System.out.println("id删除");
    }
}

创建测试类

创建测试类,对Service方法进行测试

package com.example.demo;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;

import static org.junit.jupiter.api.Assertions.*;

@ExtendWith(SpringExtension.class) //导入spring测试框架[2]
@SpringBootTest
        //提供spring依赖注入
class BookDaoTest {
    @Autowired
    private BookDao bookDao;
    @Test
    public void test(){
        bookDao.getBookById(1);
        bookDao.getBookById(1);
        bookDao.deleteBookById(1);
        Book book = bookDao.getBookById(1);
        System.out.println(book);
        book.setName("mingming");
        book.setAuthor("mingming");
        book.setId(1);
        bookDao.updateBookById(book);
        Book book1 = bookDao.getBookById(1);
        System.out.println(book1);
    }
}

查看结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V1Tw3ceL-1592666394166)(https://www.iming.info/wp-content/uploads/2020/06/wp_editor_md_4935782fec7d7ce419a89ccfe187ebe9.jpg)]

微信公众号

你可能感兴趣的:(后端)