SpringBoot學習筆記07——Cache快取初探
阿新 • • 發佈:2018-11-12
今天學習了一下關於spring的快取,初次使用,來做一下記錄!
目前我只用到了三個註解
@Cacheable:查詢資料,如果快取中有,直接從快取中取,如果沒有執行方法中程式碼獲取結果,並存入快取中。 @CachePut:修改快取的值 @EnableCaching:專案啟動時掃描快取註解
話不多說,直接開始上程式碼。
1.建立快取服務
下面service中寫了兩個方法,一個是查詢快取,一個是修改快取
package com.youyou.address.service; import org.springframework.cache.annotation.CachePut; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * 這是一個測試快取service * * @author 劉朋 * <br/>date 2018-10-24 */ @Service public class CacheService { /** * 查詢快取,快取的名字是testList,用key來標識 * @param key * @return */ @Cacheable(cacheNames = "testList" , key = "#key") public List<String> testCache(String key){ List<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add(key); return list; } /** * 修改快取,快取的名字是testList,用key來標識 * @param key * @return */ @CachePut(cacheNames = "testList" , key = "#key") public List<String> testPutCache(String key){ List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); list.add(key); return list; } }
2.新增快取掃描
在啟動類上新增快取掃描註解
package com.youyou; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cache.annotation.EnableCaching; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @MapperScan("com.youyou.*")//將專案中對應的mapper類的路徑加進來就可以了 @EnableCaching //如果想啟動快取,需要加此註解 public class WorldMainApplication { public static void main(String[] args) { //啟動專案 SpringApplication.run(WorldMainApplication.class, args); } }
到此為止快取服務已經建立完成。
來讓我們測試一下!
package com.youyou.address; import com.youyou.address.service.CacheService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import java.util.List; /** * //TODO 新增類/介面功能描述 * * @author 劉朋 * <br/>date 2018-09-06 */ @Api(description = "第一個介面") @RestController @RequestMapping("/hello") public class HelloWorldController { @Autowired private CacheService cacheService ; @ApiOperation(value = "測試快取" ) @GetMapping("/testCache") public String testCache(){ //第一次中快取中查詢 List<String> test = cacheService.testCache("test"); System.out.println(test); //修改快取中的值 List<String> test2 = cacheService.testPutCache("test"); System.out.println(test2); //再次從快取中查詢 List<String> test3 = cacheService.testCache("test"); System.out.println(test3); return ""; } }
訪問介面檢視列印結果如下: