Spring Cache 解析

whisperrr發表於2021-08-12

  一. 要學Spring Cache第一步學:SpEL 表示式

  SpEL有三種用法,一種是在註解@Value中;一種是XML配置;最後一種是在程式碼塊中使用Expression。

  1 //@Value能修飾成員變數和方法形參

  //#{}內就是表示式的內容

  @Value("#{表示式}")

  public String arg;

  3 public static void main(String[] args) {

  //建立ExpressionParser解析表示式

  ExpressionParser parser = new SpelExpressionParser();

  //表示式放置   大連無痛人流醫院  

    Expression exp = parser.parseExpression("表示式");

  //執行表示式,預設容器是spring本身的容器:ApplicationContext

  Object value = exp.getValue();}

  spring cache 用第二類方式


  二 .相關的註解 :

  1. 主要註解:@Cacheable(value=”dicCollege”,key =CacheConstant.KEY_DIC_COLLEGE), {注意:就是redies儲存的key格式為dicCollege::CacheConstant.KEY_DIC_COLLEGE )}

  //spring boot程式碼為:

  @Cacheable(value = “dicCollege”,key =CacheConstant.KEY_DIC_COLLEGE)

  public ResultJson list(@RequestBody PageWeb pageWeb){

  }

  這個註釋的意思是,當呼叫這個方法的時候,會從redies裡一個名叫 dicCollege加key欄位的快取中查詢。

  如果沒有,則執行實際的方法(即查詢資料庫),並將執行的結果存入快取中,否則返回快取中的物件。

  這裡的快取中的 key 就是入參的引數物件的相對於欄位。即使自己寫入的相應欄位。可以用sql表示式加自己需要的字串連線

  我的CacheConstant.KEY_DIC_COLLEGE等於 'dicCollege-'+#pageWeb.pageNum+'-'+#pageWeb.pageSize+'-'+#pageWeb.params.getCollegeName()

  及存入redies的值為:

  1 null 引數分別為pageWeb的三個內部數: ’#pageWeb.pageNum','#pageWeb.pageSize'',‘#pageWeb.params.getCollegeName()‘

  再次呼叫時,如果沒有呼叫增刪改,就可以直接從第三方redies呼叫。

  2. 主要註解:@CacheEvict(value ="dicCollege",allEntries = true)

  @CacheEvict 註釋來標記要清空快取的方法,當這個方法被呼叫後,即會清空快取。

  一般用於增刪改 ,形式一般為:@CacheEvict(value = “dicCollege”,allEntries = true)

  3 @CachePut 註釋,這個註釋可以確保方法被執行,同時方法的返回值也被記錄到快取中,實現快取與資料庫的同步更新(不常用)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005147/viewspace-2786629/,如需轉載,請註明出處,否則將追究法律責任。

相關文章