0

Spring 5 (Springboot 2.x) プロジェクトの jar ファイルの外部で ehCache 3 ehcache.xml を外部化する方法を理解するのにかなりの時間を費やしました。これは、プロジェクトを再デプロイしなくても ehcache 設定を微調整できるようにするために重要です。

4

1 に答える 1

1

他の誰かがこの課題に直面した場合に備えて、Java 8 を使用して機能したソリューションを共有するだけです。

package com.myproject.config;
import java.net.URISyntaxException;
import java.nio.file.Paths;
import javax.cache.Caching;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.jcache.JCacheCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Configures ehCache.
 * 
 * @author 
 *
 */
@Configuration
@EnableCaching
public class CacheConfiguration {
    private static final Logger LOGGER = LoggerFactory.getLogger(CacheConfiguration.class);
    @Value("${myproject.cache.ehcache.xml.fullpath:/dir/outside/of/project/config/ehcache.xml}")
    private String ehcacheXmlFullPath;

    @Bean
    public CacheManager cacheManager() throws URISyntaxException {
        // To get from the classpath: getClass().getResource("/ehcache.xml").toURI()
        return new JCacheCacheManager(Caching.getCachingProvider().getCacheManager(Paths.get(ehcacheXmlFullPath).toUri(),
                getClass().getClassLoader()));
    }
}
于 2018-11-26T03:29:14.870 に答える