最近在開發一個新項目,用的框架(中間件)比較多,所以最近的文章,都會以優雅的實戰為主,也可以是框架(中間件)的簡單DEMO。
今天給大家帶來EhCache在SpringBoot框架下使用實戰。
簡介
EhCache 是一個純JAVA的進程內緩存框架,具有快速、精干等特點。
注意概念中的關鍵詞進程內,他傳遞了兩個關鍵點:
- 速度快(進程內剔除了各種切換資源的損耗);
- 單機適用;
現在我們說緩存,迅速想到的絕對是我們的redis,其實在java生態下,有很多場景我們用EhCache更合理。
我這里簡單的區分一下什么時候使用Redis,什么時候使用EhCache。
當我們的緩存需要多個進程(分布式)共享的時候,使用Redis,如果只是單機、單應用內的常見緩存,使用EhCache。
這篇文章不介紹太多的概念與配置,比較偏實戰,老規矩,上導讀圖,直接進入實戰環節。
優雅的集成EhCache
SpringBoot集成實戰創建項目
創建Maven項目
引入依賴
分別引入spring-boot-starter-web、spring-boot-starter-cache、cache-api、ehcache四個包
org.springframework.boot spring-boot-starter-web 2.6.1 org.springframework.boot spring-boot-starter-cache 2.6.1 javax.cache cache-api 1.1.1 org.ehcache ehcache 3.8.1
記得刷新Maven引用
刷新Maven引用
配置啟動類
配置啟動類
指定配置
新建配置文件 Application.properties 和 ehcache.xml
application.properties內容
ehcache.xml定義一個緩存模塊,指定key和value的類型,指定過期時間。
java.lang.String java.lang.String 30 2 10
增加配置注解config文件
通過配置注解開啟EhCache
模擬場景
從控制器進入查找用戶,查看是否多次調用Service的接口。
整體代碼結構
控制器入口
service定義
場景測試
通過啟動類,啟動服務。
瀏覽器訪問:http://localhost:8001/user/1
瀏覽器訪問結果
第一次控制臺輸出:
第一次控制臺輸出
之后刷新不會有變化,過了30s之后又會重新進入方法。
事件監聽
在ehcache.xml增加監聽配置
com.baeldung.cachetest.config.CacheEventLogger ASYNCHRONOUS UNORDERED CREATED EXPIRED
測試監聽
刷新瀏覽器測試
第一次訪問
30秒之后刷新
注意有一個過期的事件。
源代碼地址
好了,EhCache簡單的實戰就到這里結束了,源碼可以從 https://github.com/lianbian/EhCache 查看