最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot集成Spring Cache過程詳解

 更新時(shí)間:2019年10月24日 08:57:24   作者:楊小格子  
這篇文章主要介紹了Spring Boot集成Spring Cache過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一、關(guān)于Spring Cache

緩存在現(xiàn)在的應(yīng)用中越來越重要,

Spring從3.1開始定義了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口來統(tǒng)一不同的緩存技術(shù),并支持使用JCache(JSR-107)注解簡化我們開發(fā)。

通過SpringCache,可以快速嵌入自己的Cache實(shí)現(xiàn),主要是@Cacheable、@CachePut、@CacheEvict、@CacheConfig、@Caching等注解來實(shí)現(xiàn)。

  • @Cacheable:作用于方法上,用于對于方法返回結(jié)果進(jìn)行緩存,如果已經(jīng)存在該緩存,則直接從緩存中獲取,緩存的key可以從入?yún)⒅兄付ǎ彺娴膙alue為方法返回值。
  • @CachePut:作用于方法上,無論是否存在該緩存,每次都會(huì)重新添加緩存,緩存的key可以從入?yún)⒅兄付?,緩存的value為方法返回值,常用作于更新。
  • @CacheEvict:作用于方法上,用于清除緩存。
  • @CacheConfig:作用在類上,統(tǒng)一配置本類的緩存注解的屬性。
  • @Caching:作用于方法上,用于一次性設(shè)置多個(gè)緩存。
  • @EnableCaching:作用于類上,用于開啟注解功能。

二、演示示例

欲使用Spring Cache,需要先引入Spring Cache的依賴。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--Spring Cache依賴-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

然后在啟動(dòng)類上,我們需要使用@EnableCaching來聲明開啟緩存。

@EnableCaching //開啟緩存
@SpringBootApplication
public class SpringbootApplication {

  public static void main(String[] args) {
    SpringApplication.run(SpringbootApplication.class, args);
  }

}

這樣就可以使用注解來操作緩存了,創(chuàng)建CacheService類,其中dataMap的Map存儲(chǔ)數(shù)據(jù),省去了數(shù)據(jù)庫的操作。

@Slf4j
@Service
public class CacheService {

  private Map<Integer, User> dataMap = new HashMap <Integer, User>(){
    {
      for (int i = 1; i < 100 ; i++) {
        User u = new User("code" + i, "name" + i);
        put(i, u);
      }
    }
   };

  // 獲取數(shù)據(jù)
  @Cacheable(value = "cache", key = "'user:' + #id")
  public User get(int id){
    log.info("通過id{}查詢獲取", id);
    return dataMap.get(id);
  }

  // 更新數(shù)據(jù)
  @CachePut(value = "cache", key = "'user:' + #id")
  public User set(int id, User u){
    log.info("更新id{}數(shù)據(jù)", id);
    dataMap.put(id, u);
    return u;
   }
   
  //刪除數(shù)據(jù)
  @CacheEvict(value = "cache", key = "'user:' + #id")
  public User del(int id){
    log.info("刪除id{}數(shù)據(jù)", id);
    dataMap.remove(id);
    return u;
  }

}

get方法模擬查詢,@Cacheable用于添加緩存,set方法用于修改,@CachePut更新緩存,del方法用于刪除數(shù)據(jù), @CacheEvict刪除緩存。需要注意的是,注解的value表示緩存分類,并不是指緩存的對象值。

然后在創(chuàng)建CacheApi,用于調(diào)用CacheService進(jìn)行測試。

@RestController
@RequestMapping("cache")
public class CacheApi {

  @Autowired
  private CacheService cacheService;

  @GetMapping("get")
  public User get(@RequestParam int id){
    return cacheService.get(id);
  }

  @PostMapping("set")
  public User set(@RequestParam int id, @RequestParam String code, @RequestParam String name){
    User u = new User(code, name);
    return cacheService.set(id, u);
  }

  @DeleteMapping("del")
  public void del(@RequestParam int id){
    cacheService.del(id);
  }
}

然后我們打開swagger-ui界面(http://localhost:10900/swagger-ui.html)進(jìn)行測試,多次調(diào)用查詢,可以看到, CacheService的get方法,對于同一id僅僅執(zhí)行一遍。然后再調(diào)用更新,再次get時(shí),即可發(fā)現(xiàn)數(shù)據(jù)已經(jīng)更新,而調(diào)用del,則可以清除緩存,再次查詢又會(huì)調(diào)用方法。

源碼地址:https://github.com/imyanger/springboot-project/tree/master/p20-springboot-cache

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)現(xiàn)對字符串中的數(shù)值進(jìn)行排序操作示例

    Java實(shí)現(xiàn)對字符串中的數(shù)值進(jìn)行排序操作示例

    這篇文章主要介紹了Java實(shí)現(xiàn)對字符串中的數(shù)值進(jìn)行排序操作,涉及java字符串與數(shù)組的相互轉(zhuǎn)換以及數(shù)組排序相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • spring boot 使用Aop通知打印控制器請求報(bào)文和返回報(bào)文問題

    spring boot 使用Aop通知打印控制器請求報(bào)文和返回報(bào)文問題

    這篇文章主要介紹了spring-boot 使用Aop通知打印控制器請求報(bào)文和返回報(bào)文,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-04-04
  • JAVA實(shí)戰(zhàn)項(xiàng)目實(shí)現(xiàn)客戶選購系統(tǒng)詳細(xì)流程

    JAVA實(shí)戰(zhàn)項(xiàng)目實(shí)現(xiàn)客戶選購系統(tǒng)詳細(xì)流程

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)簡單的客戶選購系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-10-10
  • Java多線程中Callable和Future的解讀

    Java多線程中Callable和Future的解讀

    這篇文章主要介紹了Java多線程中Callable和Future的解讀,Callable接口類似于Runnable,從名字就可以看出來了,但是Runnable不會(huì)返回結(jié)果,并且無法拋出返回結(jié)果的異常,而Callable功能更強(qiáng)大一些,被線程執(zhí)行后,可以返回值,這個(gè)返回值可以被Future拿到,需要的朋友可以參考下
    2023-09-09
  • SpringBoot中使用Ehcache的詳細(xì)教程

    SpringBoot中使用Ehcache的詳細(xì)教程

    EhCache 是一個(gè)純 Java 的進(jìn)程內(nèi)緩存框架,具有快速、精干等特點(diǎn),是 Hibernate 中默認(rèn)的 CacheProvider。這篇文章主要介紹了SpringBoot中使用Ehcache的相關(guān)知識(shí),需要的朋友可以參考下
    2020-08-08
  • String StringBuilder StringBuffer區(qū)別以及源碼分析

    String StringBuilder StringBuffer區(qū)別以及源碼分析

    string是C++標(biāo)準(zhǔn)庫的一個(gè)重要的部分,主要用于字符串處理。可以使用輸入輸出流方式直接進(jìn)行string操作,同時(shí),C++的算法庫對string類也有著很好的支持,并且string類還和c語言的字符串之間有著良好的接口
    2021-06-06
  • 踩坑批量更新sql報(bào)錯(cuò),實(shí)際sql能夠正常執(zhí)行的問題

    踩坑批量更新sql報(bào)錯(cuò),實(shí)際sql能夠正常執(zhí)行的問題

    在項(xiàng)目工程遷移過程中,遇到了一個(gè)批量更新接口在新工程中報(bào)錯(cuò)的問題,通過分析,排除了代碼錯(cuò)誤的可能,最終發(fā)現(xiàn)是由于數(shù)據(jù)庫連接配置不當(dāng)導(dǎo)致的,在jdbc連接字符串中加入allowMultiQueries=true參數(shù)后,問題得以解決,這個(gè)參數(shù)的作用是允許SQL批量執(zhí)行
    2022-12-12
  • 詳解Java如何實(shí)現(xiàn)企業(yè)微信審批流程

    詳解Java如何實(shí)現(xiàn)企業(yè)微信審批流程

    這篇文章主要使用了一個(gè)Java示例代碼,來向大家展示如何在企業(yè)微信中實(shí)現(xiàn)審批流程,文中的示例代碼簡潔易懂,有需要的小伙伴可以參考下
    2024-11-11
  • Java多態(tài)到底都有啥好處

    Java多態(tài)到底都有啥好處

    Java中的多態(tài)性有兩種類型:編譯時(shí)多態(tài)(靜態(tài)綁定)和運(yùn)行時(shí)多態(tài)(動(dòng)態(tài)綁定)。方法重載是靜態(tài)多態(tài)的一個(gè)例子,而方法重寫是動(dòng)態(tài)多態(tài)的一個(gè)例子,接下來通過本文給大家分享Java多態(tài)到底教了我干啥?有啥好處,一起了解下吧
    2021-05-05
  • Spring框架七大模塊簡單介紹

    Spring框架七大模塊簡單介紹

    這篇文章主要介紹了Spring框架七大模塊簡單介紹,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11

最新評論

垣曲县| 赤水市| 九寨沟县| 溧阳市| 武宣县| 公主岭市| 宜黄县| 江永县| 巨野县| 和田市| 邢台市| 麦盖提县| 太保市| 金门县| 枣强县| 墨脱县| 石门县| 汾西县| 宣恩县| 调兵山市| 和政县| 克什克腾旗| 彭水| 日土县| 清苑县| 孙吴县| 龙门县| 故城县| 额济纳旗| 仁化县| 滕州市| 东莞市| 岚皋县| 潞西市| 盐亭县| 宝清县| 肥东县| 肇庆市| 沾化县| 儋州市| 灌云县|