您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關spring緩存cache怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
在spring配置文件中添加schema和spring對緩存注解的支持:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p" xmlns:cache="http://www.springframework.org/schema/cache" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd" default-autowire="byName"> <!--緩存配置--> <cache:annotation-driven/>
在spring配置文件中加入緩存管理器:
<!-- generic cache manager --> <bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager"> <property name="caches"> <set> <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="hardwareCache"/> <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="bannerCache"/> </set> </property> </bean>
然后在代碼的service的impl層加上如下注解即可把數據緩存起來:
@Cacheable(value="bannerCache")
其中@Cacheable表示spring將緩存該方法獲取到的數據,(緩存是基于key-value方式實現的),key為該方法的參數,value為返回的數據,當你連續訪問該方法時你會發現只有第一次會訪問數據庫. 其他次數只是查詢緩存.減輕了數據庫的壓力.
當更新了數據庫的數據,需要讓緩存失效時,使用下面的注解:
這個注解表示讓appCache緩存的所有數據都失效。
@CacheEvict(value = "appCache", allEntries = true)
Spring Cache @Cacheable本身不支持key expiration的設置,以下代碼可自定義實現Spring Cache的expiration,針對Redis、SpringBoot2.0。
直接上代碼:
@Service @Configuration public class CustomCacheMng{ private Logger logger = LoggerFactory.getLogger(this.getClass()); // 指明自定義cacheManager的bean name @Cacheable(value = "test",key = "'obj1'",cacheManager = "customCacheManager") public User cache1(){ User user = new User().setId(1); logger.info("1"); return user; } @Cacheable(value = "test",key = "'obj2'") public User cache2(){ User user = new User().setId(1); logger.info("2"); return user; } // 自定義的cacheManager,實現存活2天 @Bean(name = "customCacheManager") public CacheManager cacheManager( RedisTemplate<?, ?> redisTemplate) { RedisCacheWriter writer = RedisCacheWriter.lockingRedisCacheWriter(redisTemplate.getConnectionFactory()); RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofDays(2)); return new RedisCacheManager(writer, config); } // 提供默認的cacheManager,應用于全局 @Bean @Primary public CacheManager defaultCacheManager( RedisTemplate<?, ?> redisTemplate) { RedisCacheWriter writer = RedisCacheWriter.lockingRedisCacheWriter(redisTemplate.getConnectionFactory()); RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig(); return new RedisCacheManager(writer, config); } }
關于“spring緩存cache怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。