Spring Java 注解配置之 Ehcache3.+配置

Spring使用Ehcache3.+缓存机制

@Configuration
@EnableSpringHttpSession
public class SpringCacheEhcacheConfig {

    /**
     * 缓存配置
     * 
     * @return
     * @throws IOException
     */
    @Bean("mManagerFactoryBean")
    public JCacheManagerFactoryBean mManagerFactoryBean() throws IOException {
        JCacheManagerFactoryBean factoryBean = new JCacheManagerFactoryBean();
        factoryBean.setCacheManagerUri(new ClassPathResource("ehcache.xml").getURI());

        return factoryBean;
    }

    /**
     * 缓存管理器
     * 
     * @return
     */
    @Bean("springCacheManager")
    public JCacheCacheManager mCacheManager(@Qualifier("mManagerFactoryBean") CacheManager cacheManager) {
        return new JCacheCacheManager(cacheManager);
    }

    /**
     * Spring Session
     * 
     * @return
     */
    @Bean
    public JCacheCacheSessionRepository mSessionRepository(@Qualifier("mManagerFactoryBean") CacheManager cacheManager) {
        return new JCacheCacheSessionRepository(cacheManager);
    }

}

需要在src/main/resources 下建立ehcache.xml配置文件,其配置方式在ehcache官方文档中可以了解到,我的配置比较简单,就配置了shrio使用的缓存

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:jsr107='http://www.ehcache.org/v3/jsr107' xmlns='http://www.ehcache.org/v3'
    xsi:schemaLocation="
        http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.1.xsd
        http://www.ehcache.org/v3/jsr107 http://www.ehcache.org/schema/ehcache-107-ext-3.1.xsd">
    <persistence directory="temp" />

    <cache alias="session-cache" uses-template="heap-cache">
        <key-type>java.lang.String</key-type>
        <value-type>cn.virens.web.components.session.CacheSession</value-type>
        <expiry>
            <ttl unit="minutes">30</ttl>
        </expiry>
    </cache>

    <cache alias="shiro-authorizationCache" uses-template="heap-cache">
        <expiry>
            <ttl unit="minutes">30</ttl>
        </expiry>
    </cache>

    <cache alias="shiro-authenticationCache" uses-template="heap-cache">
        <expiry>
            <ttl unit="minutes">30</ttl>
        </expiry>
    </cache>

    <cache alias="menus-cache" uses-template="heap-cache">
        <expiry>
            <ttl unit="minutes">60</ttl>
        </expiry>
    </cache>
    <cache alias="upload-files-cache" uses-template="heap-cache">
        <expiry>
            <ttl unit="minutes">60</ttl>
        </expiry>
    </cache>
    <cache alias="upload-images-cache" uses-template="heap-cache">
        <expiry>
            <ttl unit="minutes">60</ttl>
        </expiry>
    </cache>
    
    <cache-template name="heap-cache">
        <resources>
            <offheap unit="MB">50</offheap>
            <heap unit="entries">2000</heap>
            <disk persistent="true" unit="MB">500</disk>
        </resources>
    </cache-template>
</config>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容