diff --git a/pom.xml b/pom.xml index 0edf749a1..dae537275 100644 --- a/pom.xml +++ b/pom.xml @@ -222,10 +222,6 @@ provided - - org.springframework.boot - spring-boot-starter-cache - org.hibernate.orm @@ -235,7 +231,6 @@ org.ehcache ehcache - runtime jakarta diff --git a/src/main/java/org/tb/SalatApplication.java b/src/main/java/org/tb/SalatApplication.java index 67b13bfbd..1dd65290f 100644 --- a/src/main/java/org/tb/SalatApplication.java +++ b/src/main/java/org/tb/SalatApplication.java @@ -19,8 +19,6 @@ public class SalatApplication { public static void main(String[] args) { - // To use environment variables in the ehcache.xml as replacements - System.getenv().forEach(System::setProperty); SpringApplication.run(SalatApplication.class, args); } diff --git a/src/main/java/org/tb/common/configuration/HibernateSecondLevelCacheConfiguration.java b/src/main/java/org/tb/common/configuration/HibernateSecondLevelCacheConfiguration.java index a23efed81..8dda4f258 100644 --- a/src/main/java/org/tb/common/configuration/HibernateSecondLevelCacheConfiguration.java +++ b/src/main/java/org/tb/common/configuration/HibernateSecondLevelCacheConfiguration.java @@ -1,18 +1,37 @@ package org.tb.common.configuration; import org.hibernate.cache.jcache.ConfigSettings; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.orm.jpa.HibernatePropertiesCustomizer; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.cache.jcache.JCacheCacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ResourceLoader; -@Configuration(proxyBeanMethods = false) -@EnableCaching +import javax.cache.CacheManager; +import javax.cache.Caching; +import javax.cache.spi.CachingProvider; +import java.io.IOException; +import java.net.URI; + + +@Configuration public class HibernateSecondLevelCacheConfiguration { @Bean - public HibernatePropertiesCustomizer hibernateSecondLevelCacheCustomizer(JCacheCacheManager cacheManager) { - return (properties) -> properties.put(ConfigSettings.CACHE_MANAGER, cacheManager.getCacheManager()); + public HibernatePropertiesCustomizer hibernateSecondLevelCacheCustomizer(ResourceLoader resourceLoader, + @Value("${salat.cache.max-entries}") String maxCacheEntries, + @Value("${salat.cache.expiry-tti}") String expiryTti) { + return (properties) -> { + try { + URI uri = resourceLoader.getResource("classpath:ehcache.xml").getURI(); + CachingProvider cachingProvider = Caching.getCachingProvider(); + System.setProperty("EHCACHE_EXPIRY_TTI", expiryTti); + System.setProperty("EHCACHE_RESOURCES_HEAP_ENTRIES", maxCacheEntries); + CacheManager cacheManager = cachingProvider.getCacheManager(uri, cachingProvider.getDefaultClassLoader()); + properties.put(ConfigSettings.CACHE_MANAGER, cacheManager); + } catch (IOException e) { + throw new RuntimeException(e); + } + }; } } diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 2198bbb59..5078fb975 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -76,6 +76,9 @@ salat: mail-host: localhost auth-service: cache-expiry: 1s + cache: + max-entries: 1000 + expiry-tti: 10 springdoc: swagger-ui: path: /api/doc/ diff --git a/src/main/resources/ehcache.xml b/src/main/resources/ehcache.xml index 7c008a094..945c914e9 100644 --- a/src/main/resources/ehcache.xml +++ b/src/main/resources/ehcache.xml @@ -13,10 +13,10 @@ - 10 + ${EHCACHE_EXPIRY_TTI} - ${MAX_CACHE_ENTRIES} + ${EHCACHE_RESOURCES_HEAP_ENTRIES}