這篇文章主要講解了“SpringBoot集成SpringCache的過(guò)程詳解”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“SpringBoot集成SpringCache的過(guò)程詳解”吧!
為灣里等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及灣里網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、灣里網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
一、關(guān)于Spring Cache
緩存在現(xiàn)在的應(yīng)用中越來(lái)越重要,
Spring從3.1開(kāi)始定義了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口來(lái)統(tǒng)一不同的緩存技術(shù),并支持使用JCache(JSR-107)注解簡(jiǎn)化我們開(kāi)發(fā)。
通過(guò)SpringCache,可以快速嵌入自己的Cache實(shí)現(xiàn),主要是@Cacheable、@CachePut、@CacheEvict、@CacheConfig、@Caching等注解來(lái)實(shí)現(xiàn)。
@Cacheable:作用于方法上,用于對(duì)于方法返回結(jié)果進(jìn)行緩存,如果已經(jīng)存在該緩存,則直接從緩存中獲取,緩存的key可以從入?yún)⒅兄付ǎ彺娴膙alue為方法返回值。 @CachePut:作用于方法上,無(wú)論是否存在該緩存,每次都會(huì)重新添加緩存,緩存的key可以從入?yún)⒅兄付?,緩存的value為方法返回值,常用作于更新。 @CacheEvict:作用于方法上,用于清除緩存。 @CacheConfig:作用在類(lèi)上,統(tǒng)一配置本類(lèi)的緩存注解的屬性。 @Caching:作用于方法上,用于一次性設(shè)置多個(gè)緩存。 @EnableCaching:作用于類(lèi)上,用于開(kāi)啟注解功能。
二、演示示例
欲使用Spring Cache,需要先引入Spring Cache的依賴。
然后在啟動(dòng)類(lèi)上,我們需要使用@EnableCaching來(lái)聲明開(kāi)啟緩存。
@EnableCaching //開(kāi)啟緩存@SpringBootApplicationpublic class SpringbootApplication { public static void main(String[] args) { SpringApplication.run(SpringbootApplication.class, args); }}
這樣就可以使用注解來(lái)操作緩存了,創(chuàng)建CacheService類(lèi),其中dataMap的Map存儲(chǔ)數(shù)據(jù),省去了數(shù)據(jù)庫(kù)的操作。
@Slf4j@Servicepublic class CacheService { private Map
get方法模擬查詢,@Cacheable用于添加緩存,set方法用于修改,@CachePut更新緩存,del方法用于刪除數(shù)據(jù), @CacheEvict刪除緩存。需要注意的是,注解的value表示緩存分類(lèi),并不是指緩存的對(duì)象值。
然后在創(chuàng)建CacheApi,用于調(diào)用CacheService進(jìn)行測(cè)試。
@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); }}
然后我們打開(kāi)swagger-ui界面(http://localhost:10900/swagger-ui.html)進(jìn)行測(cè)試,多次調(diào)用查詢,可以看到, CacheService的get方法,對(duì)于同一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
感謝各位的閱讀,以上就是“SpringBoot集成SpringCache的過(guò)程詳解”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)SpringBoot集成SpringCache的過(guò)程詳解這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!