日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

springboot2.3.4集成EhCache缓存框架完整代码

發布時間:2025/1/21 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springboot2.3.4集成EhCache缓存框架完整代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

代碼部分

pom

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.zxl.ehcache</groupId><artifactId>springboot-ehcache-demo</artifactId><version>1.0-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.10</version><scope>provided</scope></dependency><!-- Spring Boot 緩存支持啟動器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><!-- Ehcache 坐標 --><dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.5.5</version></plugin></plugins></build></project>

啟動類

package com.zxl.ehcache;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCaching;/* * 在啟動類前加上@EnableCaching注解;這樣的話,啟動類啟動時會去啟動緩存啟動器 * */ @SpringBootApplication @EnableCaching public class CacheApplication {public static void main(String[] args) {SpringApplication.run(CacheApplication.class, args);}}

controller

package com.zxl.ehcache.controller;import com.zxl.ehcache.model.ProductInfo; import com.zxl.ehcache.service.CacheService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*;/*** 緩存Controller** @author zxl*/ @RestController public class CacheController {@Autowiredprivate CacheService cacheService;@PostMapping("/testPutCache")public String testPutCache(@RequestBody ProductInfo productInfo) {cacheService.saveLocalCache(productInfo);return "success";}@GetMapping("/testGetCache")public ProductInfo testGetCache(Long id) {return cacheService.getLocalCache(id);}}

model

package com.zxl.ehcache.model;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable;/*** 實體類實現可序列化接口Serializable;由于需要實體類支持緩存中的磁盤存儲,所以需要實體類實現可序列化接口** @author zxl*/ @Data @NoArgsConstructor @AllArgsConstructor public class ProductInfo implements Serializable {private Long id;private String name;private Double price; }

service

package com.zxl.ehcache.service;import com.zxl.ehcache.model.ProductInfo ;/*** 緩存service接口* @author zxl**/ public interface CacheService {/*** 將商品信息保存到本地緩存中* @param productInfo* @return*/ProductInfo saveLocalCache(ProductInfo productInfo);/*** 從本地緩存中獲取商品信息* @param id* @return*/ProductInfo getLocalCache(Long id);}

impl:

package com.zxl.ehcache.service.impl;import com.zxl.ehcache.model.ProductInfo; import com.zxl.ehcache.service.CacheService; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CachePut; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service;/*** 緩存Service實現類* 使用@CachePut存數據到緩存* 使用@Cacheable讀取緩存* @author zxl*/ @Service public class CacheServiceImpl implements CacheService {public static final String CACHE_NAME = "local";/*** 將商品信息保存到本地緩存中** @param productInfo* @return*/@CachePut(value = CACHE_NAME, key = "'key_'+#productInfo.getId()")public ProductInfo saveLocalCache(ProductInfo productInfo) {return productInfo;}/*** 從本地緩存中獲取商品信息** @param id* @return*/@Cacheable(value = CACHE_NAME, key = "'key_'+#id")public ProductInfo getLocalCache(Long id) {return null;}// 使用@CacheEvict清除緩存/*@CacheEvict(value="users",allEntries=true)public void saveUsers(Users users) {this.usersRepository.save(users);}*/// @CacheEvict是用來標注在需要清除緩存元素的方法或類上的。當標記在一個類上時表示其中所有的方法的執行都會觸發緩存的清除操作。@CacheEvict可以指定的屬性有value、key、condition、allEntries和beforeInvocation。// 其中value、key和condition的語義與@Cacheable對應的屬性類似;allEntries是boolean類型,表示是否需要清除緩存中的所有元素。默認為false,表示不需要。// 當指定了allEntries為true時,Spring Cache將忽略指定的key。有的時候我們需要Cache一下清除所有的元素,這比一個一個清除元素更有效率// 使用@CachePut標注的方法在執行前不會去檢查緩存中是否存在之前執行過的結果,而是每次都會執行該方法,并將執行結果以鍵值對的形式存入指定的緩存中。// @Cacheable:類或者方法上,類代表所有的方法都使用它,方法上針對特定的方法,作用就是先查詢緩存是否有值,有的話就直接返回緩存結果}

配置文件

application.yml

server:port: 8080spring:cache:type: ehcacheehcache:config: classpath:ehcache.xml

ehcache.xml

<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"updateCheck="false"><!-- diskStore:ehcache其實是支持內存+磁盤+堆外內存,幾個層級的緩存 --><!-- 在這里設置一下,但是一般不用的 --><diskStore path="java.io.tmpdir/Tmp_EhCache" /><!-- defaultCache,是默認的緩存策略 --><!-- 如果你指定的緩存策略沒有找到,那么就用這個默認的緩存策略 --><!-- external:如果設置為true的話,那么timeout就沒有效果,緩存就會一直存在,一般默認就是false --><!-- maxElementsInMemory:內存中可以緩存多少個緩存條目,在實踐中,你是需要自己去計算的,比如你計算你要緩存的對象是什么?有多大?最多可以緩存多少MB,或者多少個G的數據?除以每個對象的大小,計算出最多可以放多少個對象 --><!-- overflowToDisk:如果內存不夠的時候,是否溢出到磁盤 --><!-- diskPersistent:是否啟用磁盤持久化的機制,在jvm崩潰的時候和重啟之間,不用 --><!-- timeToIdleSeconds:對象最大的閑置的時間,如果超出閑置的時間,可能就會過期,我們這里就不用了,緩存最多閑置5分鐘就被干掉了 --><!-- timeToLiveSeconds:對象最多存活的時間,我們這里也不用,超過這個時間,緩存就過期,就沒了 --><!-- memoryStoreEvictionPolicy:當緩存數量達到了最大的指定條目數的時候,需要采用一定的算法,從緩存中清除一批數據,LRU,最近最少使用算法,最近一段時間內,最少使用的那些數據,就被干掉了 --><defaultCacheeternal="false"maxElementsInMemory="1000"overflowToDisk="false"diskPersistent="false"timeToIdleSeconds="300"timeToLiveSeconds="0"memoryStoreEvictionPolicy="LRU" /><!-- 手動指定的緩存策略 --><!-- 比如你一個應用吧,可能要緩存很多種不同的數據,比如說商品信息,或者是其他的一些數據 --><!-- 對不同的數據,緩存策略可以在這里配置多種 --><cachename="local"eternal="false"maxElementsInMemory="1000"overflowToDisk="false"diskPersistent="false"timeToIdleSeconds="300"timeToLiveSeconds="0"memoryStoreEvictionPolicy="LRU" /><!-- ehcache這種東西,簡單實用,是很快速的,1小時上手可以用在項目里了,沒什么難度的 --><!-- ehcache這個技術,如果講深了,里面的東西還是很多的,高級的feature,但是我們這里就不涉及了 --></ehcache>

測試

@Cacheable(value = CACHE_NAME, key = “‘key_’+#id”)
public ProductInfo getLocalCache(Long id) {
return null;
}
可以看到返回的是null,但是依然可以查詢到數據,就說明是從緩存中獲取到的

[zxl@zxl-pc:~]$ curl -H "Content-Type:application/json" -X POST -d '{"id":123,"name":"zhangsan","price":100}' "http://localhost:8080/testPutCache" success [zxl@zxl-pc:~]curl "localhost:8080/testGetCache?id=123" {"id":123,"name":"zhangsan","price":100.0}

總結

以上是生活随笔為你收集整理的springboot2.3.4集成EhCache缓存框架完整代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久无码人妻精品一区 | 健身教练巨大粗爽gay视频 | 欧美一级α片 | 国产又粗又猛又色又 | 国产精品 欧美激情 | a人片| 日本熟妇一区二区三区 | 久久av喷吹av高潮av萌白 | 在线播放91灌醉迷j高跟美女 | 一级黄色片网站 | 成年人视频网 | 亚洲黄片一区二区三区 | 成人精品视频一区 | 天堂av片| 婷婷综合网 | 五月婷婷六月天 | 亚洲老妇色熟女老太 | 亚洲精品人 | 91九色国产在线 | 亚洲欧美久久久 | 狠狠搞av | 欧美男人的天堂 | 韩国精品av | 国产中文字幕91 | 夜夜cao | 亚洲精品久久久久久久蜜桃 | 欧美成人福利 | 国产精品日韩在线观看 | 亚洲xx在线 | 欧美一区二区三区影院 | 超碰自拍| 女人扒开屁股让男人捅 | 日本成人网址 | 日韩精品2区 | 天天干天天要 | 成人欧美在线视频 | 久久精品国产成人av | 日日摸日日碰夜夜爽av | 久久一区 | 亚洲三区av | 国产精品毛片久久久久久久av | 在线看片福利 | 国产人妻精品一区二区三 | 日韩伦理中文字幕 | 成人欧美视频在线观看 | 亚洲精品少妇 | 亚洲av无码片一区二区三区 | 亚洲男人天堂2018 | 免费三级网| 精品综合 | 被黑人猛躁10次高潮视频 | wwwxxoo| 一区二区久久久 | av片在线观看网站 | 小视频在线 | 成人观看网站 | 青青草视频国产 | 国产肉体ⅹxxx137大胆 | 人妖黄色片 | 欧美日本日韩 | 自拍偷拍日韩 | 干欧美少妇 | 国产毛片一区二区三区va在线 | 人人妻人人藻人人爽欧美一区 | 久久先锋 | 美景之屋电影免费高清完整韩剧 | 国产真实自拍 | 精品中文字幕一区二区 | 日日日网站 | 麻豆md0034在线观看 | 日本少妇喷水 | 九九热精品视频在线观看 | 特级少妇 | 神马老子午夜 | 日剧网 | 亚洲女人初尝黑人巨大 | 黄色大片黄色大片 | 亚洲女成人图区 | 91色九色 | 亚洲美女av在线 | 黄色成人在线播放 | 亚洲第一天堂av | 国产精品综合视频 | 色资源网站 | 欧美大黄| 黄色高潮视频 | 亚州av一区二区 | 污污污www精品国产网站 | 国产成人福利在线 | 国产精品久久午夜夜伦鲁鲁 | 新呦u视频一区二区 | 成人爽爽视频 | 成人爽a毛片一区二区免费 日本高清免费看 | 在线观看亚洲色图 | 天堂综合网久久 | 邵氏电影《金莲外传2》免费观看 | 成年人av网站 | 波多野结衣视频网站 | 久久性爱视频网站 |