没有XML的EhCache3 + Spring Boot 2

博丹·迈斯里夫楚克

我一直在寻找如何使用Spring Boot 2实现EhCache3的解决方案。问题是,在版本3中,他们将包更改为org.ehcache,而我发现的无xml配置示例适用于声明了net.sf.ehcache的2版本。 .config。我想使用第3版。

 package com.jcg.example.ehcache_no_xml.config;

import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.cache.ehcache.EhCacheManagerFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import net.sf.ehcache.Cache;
import net.sf.ehcache.config.CacheConfiguration;

@Configuration
public class EhCacheConfig {

    @Bean
    public EhCacheManagerFactoryBean cacheManager() {
        return new EhCacheManagerFactoryBean();
    }

    @Bean
    public EhCacheCacheManager testEhCacheManager() {
        // testEhCache Configuration - create configuration of cache that previous required XML
        CacheConfiguration testEhCacheConfig = new CacheConfiguration()
            .eternal(false)                     // if true, timeouts are ignored
            .timeToIdleSeconds(3)               // time since last accessed before item is marked for removal
            .timeToLiveSeconds(5)               // time since inserted before item is marked for removal
            .maxEntriesLocalHeap(10)            // total items that can be stored in cache
            .memoryStoreEvictionPolicy("LRU")   // eviction policy for when items exceed cache. LRU = Least Recently Used
            .name("testCache");

        Cache testCache = new Cache(testEhCacheConfig);

        cacheManager().getObject().addCache(testCache);
        return new EhCacheCacheManager(cacheManager().getObject());
    }
}

有什么解决方案可以使用spring按需创建ehCache配置?

博丹·迈斯里夫楚克

好的,我将在不久前解决此问题的同时发布答案。我正在使用Spring Boot和下一个依赖项:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
  <groupId>javax.cache</groupId>
  <artifactId>cache-api</artifactId>
</dependency>
<dependency>
  <groupId>org.ehcache</groupId>
  <artifactId>ehcache</artifactId>
</dependency>

我的缓存配置:

@Configuration
@EnableCaching
public class CacheConfig {

    @Bean
    public JCacheCacheManager jCacheCacheManager() {
        return new JCacheCacheManager(cacheManager());
    }

    @Bean(value = "cacheManager")
    public CacheManager cacheManager() {
        CachingProvider provider = Caching.getCachingProvider();
        CacheManager cacheManager = provider.getCacheManager();
        List<String> cacheNames = Arrays.asList("myCacheName");
        cacheNames.forEach(cn -> cacheManager.createCache(cn, config()));
        return cacheManager;
    }

    private MutableConfiguration<SimpleKey, SiteIdSet> config() {
        return new MutableConfiguration<SimpleKey, SiteIdSet>()
                .setTypes(SimpleKey.class, ClassWhichShouldBeCached.class)
                .setStoreByValue(false);
    }

}

在开始期间,有一个方法可以检索一些值,然后将其缓存:

@Slf4j
@Service
@DependsOn("cacheManager")
public class MyServiceImpl implements MyService {

    ommited ...

    @Override
    @Cacheable(cacheNames = "myCacheName")
    public Set<Integer> getSmth() {
        return callDb();
    }

    @Override
    @CachePut(cacheNames = "myCacheName")
    public Set<Integer> getSmth() {
        return callDb();
    }
}

我不会描述此方法的作用,但是它们可与定义的缓存一起使用,并在需要时填充和更新它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有Ehcache 3.x的Spring Boot 2.x-自定义CacheEventListener中的@Autowired服务为null

来自分类Dev

Spring Boot EHcache cacheResolver

来自分类Dev

没有Spring数据的Spring Boot JPA

来自分类Dev

带有松弛的Spring Boot Oauth2

来自分类Dev

JAX-RS-Spring Boot与没有Spring Boot的对比

来自分类Dev

有没有办法使用Spring Boot Starter应用程序graphql-spring-boot-starter公开2个graphql端点?

来自分类Dev

带有Camel 2.25的Spring Boot 2.x:特定于Spring的端点不起作用

来自分类Dev

Spring Boot - 没有收到验证错误

来自分类Dev

在没有XML的Spring 4中使用EhCache

来自分类Dev

Spring Boot XML配置选项

来自分类Dev

使用Spring Boot实施2路SSL

来自分类Dev

Spring Boot 2.2.1 H2失败?

来自分类Dev

了解Spring Boot的Oauth2入门

来自分类Dev

Spring Boot 2 和日志配置

来自分类Dev

Oauth2 + Spring Boot 资源给大家

来自分类Dev

Spring Boot中Spring Security的XML配置

来自分类Dev

Spring Boot logback-spring.xml

来自分类Dev

带有JPA和H2的Spring Boot:创建了DB文件,但是没有任何持久化

来自分类Dev

Spring Boot,使用EhCache进行缓存

来自分类Dev

无法启动EHCache和Spring Boot

来自分类Dev

Spring Boot不会初始化Ehcache

来自分类Dev

多Maven项目中的Spring Boot ehcache

来自分类Dev

带有Spring Boot的JSP

来自分类Dev

带有 Hystrix 的 Spring Boot

来自分类Dev

带有Spring Boot的Spring Security

来自分类Dev

没有Spring Boot / MVC的Spring Data Rest / HATEOAS

来自分类Dev

没有spring-boot的Spring教程在哪里?

来自分类Dev

没有Spring Boot的Spring Cloud Config Server

来自分类Dev

没有Spring Security的Spring-Boot登录