Spring Cache與Ehcache 3整合
在本文中,我們將研究一些 Spring Cache 概念,然後整合 Ehcache 3。
預設情況下,由於沒有額外的提供者,Spring Cache 使用 JCache,它是Spring-Cache-Starter作為依賴項新增時存在於類路徑上的預設提供者。它只不過是一個簡單的 ConcurrentHashMap。
現在有很多支援的快取提供程式,我們可以與Spring快取整合,如Redis、Couchbase、Hazelcast等。今天我們將看看如何整合Ehcache 3。
Spring Cache介紹
控制器:
@RestController public class WebService { @Autowired private Service service; @GetMapping("/{name}") public Person generatePerson(@PathVariable(value = "name") String name) { return service.generatePerson(name); } |
服務類:
@org.springframework.stereotype.Service public class Service { Logger logger = LoggerFactory.getLogger(Service.class); @Cacheable(cacheNames = "cacheStore", key = "name") public Person generatePerson(String name) { Person person = new Person(UUID.randomUUID().toString(), name, "Switzerland"); logger.info("Generated Person: {}", person); return person; } |
方法generatePerson有一個cachable註釋定義了一個名為 的快取cacheStore。通過這種方式,您可以配置將儲存鍵值對的快取。這裡,值是函式的結果,鍵是輸入引數的名稱。
要定義您的鍵,您可以使用 Spring 的表示式語言 ( SpEL ) 格式。如果您不提供鍵,它將使用輸入作為鍵本身。
將 Ehcache 3 與 Spring Cache 整合
為了整合Ehcache 3,我們需要新增以下兩個依賴。
<dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency> <dependency> <groupId>javax.cache</groupId> <artifactId>cache-api</artifactId> </dependency> |
我們不會在這裡指定它的版本,因為 spring starter 知道哪個依賴版本是相容的。
預設情況下,Spring Cache 僅支援 Ehcache 2.x 版本,因此我們必須新增一些配置才能使其與版本 3 相容。
@Configuration public class AppConfig { @Bean public CacheManager EhcacheManager() { CacheConfiguration<String, Person> cachecConfig = CacheConfigurationBuilder .newCacheConfigurationBuilder(String.class, Person.class, ResourcePoolsBuilder.newResourcePoolsBuilder() .offheap(10, MemoryUnit.MB) .build()) .withExpiry(ExpiryPolicyBuilder.timeToIdleExpiration(Duration.ofSeconds(10))) .build(); CachingProvider cachingProvider = Caching.getCachingProvider(); CacheManager cacheManager = cachingProvider.getCacheManager(); javax.cache.configuration.Configuration<String, Person> configuration = Eh107Configuration.fromEhcacheCacheConfiguration(cachecConfig); cacheManager.createCache("cacheStore", configuration); return cacheManager; } } |
在這裡,我們做了一些配置來定義一個cacheStore具有快取過期和快取大小等屬性的快取。如果沒有來自快取的鍵請求,我們將過期時間設定為 10 秒,並且還設定了 10 MB 的堆外大小用於快取。
程式碼已上傳到GitHub。
相關文章
- Spring Boot 快速整合 Ehcache3Spring Boot
- Spring Cache + Caffeine的整合與使用Spring
- SpringBoot-Cache 集合 EhCacheSpring Boot
- 史上最全面的Spring Boot Cache使用與整合Spring Boot
- 另一種快取,Spring Boot 整合 Ehcache快取Spring Boot
- org.springframework.cache.ehcache.EhCacheManagerFactoryBeanSpringFrameworkBean
- Java快取機制:Ehcache與Guava Cache的比較Java快取Guava
- Ehcache 介紹(3)--Ehcache3 基本使用
- Mybatis 整合 ehcache快取MyBatis快取
- Ehcache介紹及整合Spring實現快取記憶體Spring快取記憶體
- Spring Boot 3中將JWT與Spring Security 6整合Spring BootJWT
- 企業級 SpringBoot 教程 (八)springboot整合spring cacheSpring Boot
- Spring Cache的基本使用與分析Spring
- Spring CacheSpring
- spring:spring與mybatis的整合SpringMyBatis
- Spring與ActiveMQ整合SpringMQ
- spring與redis整合SpringRedis
- Mybatis與Spring整合MyBatisSpring
- Spring整合Disruptor3Spring
- Spring Cache 解析Spring
- Spring Boot 整合 SpringDoc Swagger 3Spring BootSwagger
- ElasticSearch與Spring Boot整合ElasticsearchSpring Boot
- SpringBoot2-第五章:整合EhCacheSpring Boot
- Shiro【授權過濾器、與ehcache整合、驗證碼、記住我】過濾器
- Spring Cache 介紹Spring
- Spring AI與大模型Ollama如何整合整合?SpringAI大模型
- Solr與Spring Boot整合 - ViithiisysSolrSpring Boot
- Struts2【與Spring整合】Spring
- Spring與Web環境整合SpringWeb
- Spring boot學習(八)Spring boot配置ehcache快取框架Spring Boot快取框架
- Spring Boot:簡單使用EhCache快取框架Spring Boot快取框架
- Spring Cache快取框架Spring快取框架
- Spring cache原始碼分析Spring原始碼
- Shiro(環境搭建與Spring整合)Spring
- Spring同時整合JPA與MybatisSpringMyBatis
- mybatis與spring整合ssm01MyBatisSpringSSM
- 使用EHCACHE三步搞定SPRING BOOT 快取Spring Boot快取
- Spring Boot Oauth2快取UserDetails到EhcacheSpring BootOAuth快取AI