1. 程式人生 > >SpringBoot學習筆記07——Cache快取初探

SpringBoot學習筆記07——Cache快取初探

今天學習了一下關於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 "";
    }

}

訪問介面檢視列印結果如下: