首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

解释SpringBoot之Ehcache 2.x缓存

介绍

这里介绍Ehcache 2.X 缓存

添加基本的web项目

添加Ehcache 依赖

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

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 配置缓存文件

maxElementsInMemory="10000"

eternal="false"

timeToIdleSeconds="120"

timeToLiveSeconds="120"

overflowToDisk="false"

diskPersistent="false"

diskExpiryThreadIntervalSeconds="120"

/>

maxElementsInMemory="10000"

eternal="true"

overflowToDisk="true"

diskPersistent="true"

diskExpiryThreadIntervalSeconds="600"/>

注解上开启缓存

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

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;

}

}

添加相关的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);

}

}

查看结果

小明菜市场

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200620A0OO0700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券