1. 程式人生 > >006-spring cache-緩存實現-01-原生實現

006-spring cache-緩存實現-01-原生實現

enc 條件 功能 lse LV int 存儲 IT fig

一、原生實現

1.1、pom

        <!-- 緩存 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>

1.2、程序入口或者配置類,開啟緩存使用

@SpringBootApplication
@EnableCaching
public class ApplicationMain { public static void main(String[] args) { SpringApplication.run(ApplicationMain.class, args); } }

1.3、程序使用註解

@CacheConfigSpring 4中新增:主要用於配置該類中會用到的一些共用的緩存配置。在這裏@CacheConfig(cacheNames = "users"):配置了該數據訪問對象中返回的內容將存儲於名為users的緩存對象中,我們也可以不使用該註解,直接通過@Cacheable

自己配置緩存集的名字來定義。

4個annotation的配置:

@Cacheable 在方法執行前Spring先是否有緩存數據,如果有直接返回。如果沒有數據,調用方法並將方法返回值存放在緩存當中。

該註解主要有下面幾個參數:
value、cacheNames:兩個等同的參數(cacheNames為Spring 4新增,作為value的別名),用於指定緩存存儲的集合名。由於Spring 4中新增了@CacheConfig,因此在Spring 3中原本必須有的value屬性,也成為非必需項了
key:緩存對象存儲在Map集合中的key值,非必需,缺省按照函數的所有參數組合作為key值,若自己配置需使用SpEL表達式,比如:@Cacheable(key 
= "#p0"):使用函數第一個參數作為緩存的key值,更多關於SpEL表達式的詳細內容可參考官方文檔 condition:緩存對象的條件,非必需,也需使用SpEL表達式,只有滿足表達式條件的內容才會被緩存,比如:@Cacheable(key = "#p0", condition = "#p0.length() < 3"),表示只有當第一個參數的長度小於3的時候才會被緩存,若做此配置上面的AAA用戶就不會被緩存,
  讀者可自行實驗嘗試。 unless:另外一個緩存條件參數,非必需,需使用SpEL表達式。它不同於condition參數的地方在於它的判斷時機,該條件是在函數被調用之後才做判斷的,所以它可以通過對result進行判斷。 keyGenerator:用於指定key生成器,非必需。若需要指定一個自定義的key生成器,我們需要去實現org.springframework.cache.interceptor.KeyGenerator接口,並使用該參數來指定。需要註意的是:該參數與key是互斥的 cacheManager:用於指定使用哪個緩存管理器,非必需。只有當有多個時才需要使用 cacheResolver:用於指定使用那個緩存解析器,非必需。需通過org.springframework.cache.interceptor.CacheResolver接口來實現自己的緩存解析器,並用該參數指定。

@CachePut 無論怎樣,都將方法的範湖值放到緩存當中。配置於函數上,能夠根據參數定義條件來進行緩存,它與@Cacheable不同的是,它每次都會真是調用函數,所以主要用於數據新增和修改操作上。它的參數與@Cacheable類似,具體功能可參考上面對@Cacheable參數的解析

@CacheEvict 將一條或者多條數據從緩存中刪除。配置於函數上,通常用在刪除方法上,用來從緩存中移除相應數據。除了同@Cacheable一樣的參數之外,它還有下面兩個參數:

allEntries:非必需,默認為false。當為true時,會移除所有數據
beforeInvocation:非必需,默認為false,會在調用方法之後移除數據。當為true時,會在調用方法之前移除數據。

@Caching 可以通過@Caching註解組合多個註解集合在一個方法上

代碼地址:https://github.com/bjlhx15/common/tree/master/spring-cache/spring-org-cache

006-spring cache-緩存實現-01-原生實現