ローカルキャッシュguavaの使用、springboot統合guava
プロジェクト要件では、一部の変数があり、頻繁に取得する必要があり、redisに置くのも適切ではないため、ローカルキャッシュ方式でローカルに格納されています.本人のレベルが限られているため、具体的な実現原理を深く追求せず、実現コードだけを運ぶ.
1.pomファイルの変更、新規依存
2.yumファイルを構成し、SpringBootはspringを通過する.Cacheはプレフィックスとしてキャッシュを構成する
3.具体的な実現
4.springboot起動クラスに注釈を追加
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