ローカルキャッシュguavaの使用、springboot統合guava


プロジェクト要件では、一部の変数があり、頻繁に取得する必要があり、redisに置くのも適切ではないため、ローカルキャッシュ方式でローカルに格納されています.本人のレベルが限られているため、具体的な実現原理を深く追求せず、実現コードだけを運ぶ.
1.pomファイルの変更、新規依存
  
            com.google.guava  
            guava  
            19.0  
  

2.yumファイルを構成し、SpringBootはspringを通過する.Cacheはプレフィックスとしてキャッシュを構成する
spring:
  cache:
    type: guava
    #    
    cache-names: guavaDemo
    #      500 ,        6   
    guava.spec: maximumSize=500,expireAfterWrite=360m

3.具体的な実現
@Component
public class CacheUtil {



	/**
	 *    ,   
	 */
	@PostConstruct
	public void init() {
		dataMap.put(1L, "  ");
		dataMap.put(2L, "  ");
		dataMap.put(3L, "  ");
	}

	/**
	 *            ,   dataMap    ,     ,    guavaDemo                
	 * guavaDemo     key   #id+dataMap,             ,     ,     ,      
	 */
	@Cacheable(value = "guavaDemo", key = "#id + 'dataMap'")
	public String query(Long id) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		System.out.println(sdf.format(new Date()) + " : query id is " + id); 
		return dataMap.get(id);
	}

	
	/**
	 *                 dataMap        guavaDemo                   key  
	 * #id+dataMap
	 */
	@CachePut(value = "guavaDemo", key = "#id + 'dataMap'")
	public String put(Long id, String value) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		System.out.println(sdf.format(new Date()) + " : add data ,id is " + id);
		dataMap.put(id, value);
		// data persistence
		return value;
	}

	/**
	 *      dataMap            guavaDemo       key   #id+dataMap
	 */
	@CacheEvict(value = "guavaDemo", key = "#id + 'dataMap'")
	public void remove(Long id) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		System.out.println(sdf.format(new Date()) + " : remove id is " + id
				+ " data");
		dataMap.remove(id);
		// data remove
	}

4.springboot起動クラスに注釈を追加
@EnableCaching