SpringBoot-快取技術1
在實際開發工作中,如果頻繁查詢資料庫, 是不是會給資料庫伺服器帶來很大的壓力呢?
因此,我們需要對查詢出來的資料進行快取, 這樣客戶端只要從資料庫查詢了一次資料,這批資料就會放入快取中,以後再次查詢時可以從快取中讀取,這樣是不是會快很多呢?
SpringBoot支援很多種快取方式:redis、guava、ehcahe、jcache等等。
下面我們使用SpringBoot最簡單的快取方式來對SpringBoot的快取技術做一個簡單的介紹(SpringBoot的版本是1.4.0.RELEASE)。
SpringBoot預設的快取方式就是在記憶體中通過ConCurrentMap結構來進行資料的快取。
1. 首先,新建一個SpringBoot工程,結構如下
2. 編輯POM.XML,新增相關依賴包
3. 編輯application.properties檔案,對資料庫連線引數進行配置
4. 編寫實體類Person.java(此處省略了getter和setter方法)
5. 編寫資料庫訪問介面PersonRepository.java, 此處用了jap框架, 繼承JpaRepository介面即可實現基本的資料庫增刪改查操作.
6. 編寫業務類介面PersonService.java,宣告一些業務方法
7. 編寫業務介面實現類PersonServiceImpl.java
注: @CachePut: 快取新增的或者更新的資料到快取中, 其中快取名稱為person,資料的key為person.id
@CacheEvict: 從快取person中刪除key為id的快取資料
@Cacheable: 讀取快取為person中key為id的快取資料。
@CachePut、@CacheEvict、@Cacheable若未指定key, 則方法引數作為key儲存到快取中。
8. 編寫訪問控制器類PersonController.java
9. 編寫程式入口
注: 此處一定要加上@EnableCaching來開啟SpringBoot的快取支援
10. 測試訪問:
A.我們先儲存一組資料到快取中
此時頁面輸出如下:
控制檯輸出如下:
B.此時再次從頁面上訪問id=21的資料, 控制檯不會再列印Hibernate的查詢語句以及“為id、key為:21資料做了快取”。這表明程式未呼叫該方法,頁面資料直接從快取中取得。