SpringBoot學(xué)習(xí)之基于注解的緩存
主要使用到的注解:
- @Cacheable(放入緩存) 能夠根據(jù)方法的請求參數(shù)對其結(jié)果進(jìn)行緩存
- @CachePut(修改緩存中的值) 能夠根據(jù)方法的請求參數(shù)對其結(jié)果進(jìn)行緩存,和 @Cacheable 不同的是,它每次都會觸發(fā)真實方法的調(diào)用
- @CachEvict(清除緩存) 能夠根據(jù)一定的條件對緩存進(jìn)行清空
使用步驟
1、@EnableCaching 這個注解,標(biāo)注在 springboot 主啟動類上,表示系統(tǒng)開啟緩存。
@EnableCaching
@SpringBootApplication(scanBasePackages = CommonConstant.DEFAULT_PACKAGE_NAME)
public class PortalApp {
public static void main(String[] args) {
SpringApplication.run(PortalApp.class, args);
}
}2、在對應(yīng)需要進(jìn)行緩存的方法上加入對應(yīng)的注解即可;
注解屬性介紹
@Cacheable() 的屬性值及釋義:
value/cacheNames = "demoCommon";//redis的第一層文件夾為demoCommon key="#id"; //系統(tǒng)自定義key值格式,相當(dāng)于value下邊一層 unless = "#result==null";//方法返回值結(jié)果為空時,不存入緩存;
代碼示例如下:
//-- 根據(jù)id查詢demo
@Cacheable(cacheNames = "demoCommon", unless = "#result==null", key="#id")
public Demo queryById(String id) {
return demoMapper.queryById(id);
}調(diào)用上述接口,會將接口返回的數(shù)據(jù)以下圖格式存入redis,接口再使用此id作為參數(shù)查詢時,會直接去緩存里拿:

@CachPut屬性值及釋義:
value/cacheNames = "demoCommon";//redis的第一層文件夾為demoCommon keyGenerator="myKeyGenerator"; //系統(tǒng)自定義key值格式,相當(dāng)于value下邊一層
調(diào)用示例如下:
@CachePut(value = "demoCommon", key=#"#demo.id")
public Demo updateById(Demo demo) {
demoMapper.updateById(demo);
return demo;
}調(diào)用上圖接口,會根據(jù)傳入的id找到對應(yīng)的key緩存的值,并修改緩存中的value;
@CachEvict屬性值及釋義:
value/cacheNames = "demoCommon";//redis的第一層文件夾為demoCommon key=#"#demo.id"; //系統(tǒng)自定義key值格式,相當(dāng)于value下邊一層 allEntries="true";// 是否清空所有緩存內(nèi)容,缺省為 false,如果指定為 true,則方法調(diào)用后將立即清空value/cachaeNames下邊的所有緩存
@CacheEvict(value = "demoCommon",allEntries="true",key = "#demo.id")
public Demo deleteById(Demo demo) {
demoMapper.deleteById(demo);
return demo;
}調(diào)用接口后,redis為:

@Caching
接口需要使用多個注解標(biāo)簽,則可使用此注解;示例如下:
@Caching(put = {
@CachePut(value = "demoCommon1", key = "#demo.id")
@CachePut(value = "demoCommon2", key = "#demo.id")
@CachePut(value = "demoCommon3", key = "#demo.id")
})
public Demo updateByIdC(Demo demo) {
demoMapper.updateById(demo);
return demo;
}總結(jié)
到此這篇關(guān)于SpringBoot基于注解的緩存的文章就介紹到這了,更多相關(guān)SpringBoot注解的緩存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring?Boot整合持久層之JdbcTemplate多數(shù)據(jù)源
持久層是JavaEE中訪問數(shù)據(jù)庫的核心操作,SpringBoot中對常見的持久層框架都提供了自動化配置,例如JdbcTemplate、JPA 等,MyBatis 的自動化配置則是MyBatis官方提供的。接下來分別向讀者介紹Spring Boot整合這持久層技術(shù)中的整合JdbcTemplate2022-08-08
Spring應(yīng)用拋出NoUniqueBeanDefinitionException異常的解決方案
這篇文章介紹了解決org.springframework.beans.factory.NoUniqueBeanDefinitionException異常的一些解決方案,從這些解決方案可以看出Spring框架的設(shè)計精妙,遇見此問題的朋友可以參考下該解決方案2021-06-06
解決@Cacheable在同一個類中方法調(diào)用不起作用的問題
這篇文章主要介紹了解決@Cacheable在同一個類中方法調(diào)用不起作用的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
Spring?Boot?集成?Swagger2構(gòu)建?API文檔
這篇文章主要介紹了Spring?Boot?集成?Swagger2構(gòu)建?API文檔,通過使用?Swagger,我們只需要按照它所給定的一系列規(guī)范去定義接口以及接口的相關(guān)信息,然后它就能幫我們自動生成各種格式的接口文檔,方便前后端開發(fā)者進(jìn)行前后端聯(lián)調(diào),下文需要的朋友可以參考一下2022-03-03

