일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- it
- jenkins
- ubuntu
- Spring Boot
- elasticsearch
- linux
- Design Patterns
- Spring
- tool
- jsp
- javascript
- Git
- IntelliJ
- 요리
- ReactJS
- php
- Web Server
- redis
- Spring Batch
- 맛집
- devops
- JVM
- springboot
- AWS
- Oracle
- java
- Gradle
- MySQL
- db
- laravel
Archives
- Today
- Total
아무거나
Spring Boot Ehcache3 Multiple CacheManager 적용 본문
반응형
- Ehcache3 (Maven)
- CacheManagerBean 구현을 통한 Ehcache3 적용
- Ehcache3 부터는 JSR-107 로 CacheManager 로 구현해야 한다고 한다.
- JSR-107 호환 캐시를 사용하기 위해선 JCache 구현 필요
- 구현
- ehcache.xml 생성 (resources 경로 - alias: @Cacheable 의 value 값, key: 키값, value-type: cache 로 저장할 값)
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.ehcache.org/v3" xmlns:jsr107="http://www.ehcache.org/v3/jsr107" xsi:schemaLocation=" http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd http://www.ehcache.org/v3/jsr107 http://www.ehcache.org/schema/ehcache-107-ext-3.0.xsd"> <cache alias="foo"> <key-type>java.lang.String</key-type> <value-type>java.util.ArrayList</value-type> <expiry> <ttl unit="minutes">30</ttl> </expiry> <listeners> <listener> <class>com.lotteon.display.config.ehcache.CacheEventLogger</class> <event-firing-mode>ASYNCHRONOUS</event-firing-mode> <event-ordering-mode>UNORDERED</event-ordering-mode> <events-to-fire-on>CREATED</events-to-fire-on> <events-to-fire-on>EXPIRED</events-to-fire-on> </listener> </listeners> <resources> <heap unit="entries">10000</heap> <offheap unit="MB">1000</offheap> </resources> </cache> </config>
- Cache Logger
[CacheEventLogger.java]... import org.ehcache.event.CacheEvent; import org.ehcache.event.CacheEventListener; import lombok.extern.slf4j.Slf4j; @Slf4j public class CacheEventLogger implements CacheEventListener<Object, Object> { @Override public void onEvent( CacheEvent<? extends Object, ? extends Object> cacheEvent) { log.info(">>>>> key={}, old={}, new={}", cacheEvent.getKey(), cacheEvent.getOldValue(), cacheEvent.getNewValue()); } }
- CacheManager 작성 [RedisConfig.java]
// 그 외 캐시매니저들.. ... // Ehcache3 CacheManager @Bean public JCacheManagerFactoryBean jCacheManagerFactoryBean() throws Exception{ JCacheManagerFactoryBean jCacheManagerFactoryBean = new JCacheManagerFactoryBean(); jCacheManagerFactoryBean.setCacheManagerUri(new ClassPathResource("ehcache.xml").getURI()); return jCacheManagerFactoryBean; } @Bean public JCacheCacheManager ehCacheCacheManager(JCacheManagerFactoryBean jCacheManagerFactoryBean) { JCacheCacheManager jCacheCacheManager = new JCacheCacheManager(); jCacheCacheManager.setCacheManager(jCacheManagerFactoryBean.getObject()); return jCacheCacheManager; } ...
- ehcache.xml 생성 (resources 경로 - alias: @Cacheable 의 value 값, key: 키값, value-type: cache 로 저장할 값)
- CacheManagerBean 구현을 통한 Ehcache3 적용
참고
반응형
'Java & Kotlin > Spring' 카테고리의 다른 글
[Redis 시리즈 2편] Lettuce 를 사용한 Read / Write 분리 (0) | 2023.08.22 |
---|---|
[Redis 시리즈 1편] Spring Boot 에 Redis 라이브러리인 Lettuce 적용 (1) | 2023.07.31 |
Spring Boot + Jacoco 를 활용한 코드 커버리지 관리 (0) | 2023.05.30 |
[Spring Boot] Spring Boot + Junit5 를 활용한 테스트 코드 분리 (0) | 2023.05.06 |
Spring Boot + Gradle 을 활용한 정적 코드 분석 도구 Spotbugs 적용 (0) | 2023.03.27 |
Comments