真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringBoot集成SpringCache過程詳解

一、關(guān)于Spring Cache

從策劃到設(shè)計制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供網(wǎng)站制作、成都網(wǎng)站設(shè)計、網(wǎng)站策劃、網(wǎng)頁設(shè)計、主機域名、網(wǎng)站空間、網(wǎng)絡(luò)營銷、VI設(shè)計、 網(wǎng)站改版、漏洞修補等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。

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

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

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

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

二、演示示例

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


  org.springframework.boot
  spring-boot-starter-web



  org.springframework.boot
  spring-boot-starter-cache

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

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

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

}

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

@Slf4j
@Service
public class CacheService {

  private Map dataMap = new HashMap (){
    {
      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時,即可發(fā)現(xiàn)數(shù)據(jù)已經(jīng)更新,而調(diào)用del,則可以清除緩存,再次查詢又會調(diào)用方法。

Spring Boot集成Spring Cache過程詳解

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


本文題目:SpringBoot集成SpringCache過程詳解
URL網(wǎng)址:http://weahome.cn/article/jsdsdg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部