zoukankan      html  css  js  c++  java
  • SpringBoot开启缓存注解

    https://blog.csdn.net/sanjay_f/article/details/47372967

    https://www.cnblogs.com/lic309/p/4072848.html

    https://blog.csdn.net/u012373815/article/details/54564076/

    Spring Boot开启缓存注解

    1:Spring Boot 常用缓存配置:

        

    @Cacheable、@CachePut、@CacheEvict 注释介绍

    @Cacheable

    开启缓存,将查询到的结果对象,存到缓存中,一般用在查询方法上

        @Cacheable(cacheNames = {"queryNews"})
        public News queryNews(long htmlid) {
            logger.debug(htmlid);
            return foreMapper.queryNews(htmlid);
        }
    查询结果作为缓存,给缓存一个名字,如果没有默认的键,就用方法的参数作为键。

    @CachePut

    将添加的对象加到缓存中,一般用在插入,更新方法上

    @CacheEvict

    将缓存废弃,一般添加到删除方法上

        @CacheEvict(cacheNames = {"queryByCategory","queryNews","backQuery","selectCount"},allEntries=true)
        public int delete(long htmlid) throws Exception{
            int i1=manageMapper.deleteNewshtmlid(htmlid);
            int i2=manageMapper.deleteNewslistHtmlid(htmlid);
            return i1;
        }

    一次可以删除多个缓存,根据缓存名。allEtries设置为true,将集合中的缓存一下删完。

    2:自定义缓存,使用Spring Boot配置

    添加依赖

    'net.sf.ehcache:ehcache:2.8.3'
    package com.li.configuration;
    
    import org.springframework.cache.annotation.EnableCaching;
    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 org.springframework.core.io.ClassPathResource;
    
    @Configuration
    // 标注启动了缓存
    @encaching
    public class CacheConfiguration { /* * ehcache 主要的管理器 */ @Bean(name = "appEhCacheCacheManager") public EhCacheCacheManager ehCacheCacheManager(EhCacheManagerFactoryBean bean){ return new EhCacheCacheManager (bean.getObject ()); } /* * 据shared与否的设置,Spring分别通过CacheManager.create()或new CacheManager()方式来创建一个ehcache基地. */ @Bean public EhCacheManagerFactoryBean ehCacheManagerFactoryBean(){ EhCacheManagerFactoryBean cacheManagerFactoryBean = new EhCacheManagerFactoryBean (); cacheManagerFactoryBean.setConfigLocation (new ClassPathResource("/encache.xml")); cacheManagerFactoryBean.setShared (true); return cacheManagerFactoryBean; } }

    添加配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
             updateCheck="false">
        <diskStore path="java.io.tmpdir/Tmp_EhCache" />
    
        <defaultCache eternal="true" maxElementsInMemory="1000" overflowToDisk="false" diskPersistent="false"
                      timeToIdleSeconds="0" timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU" />
    
        <cache name="queryByCategory" eternal="true" maxElementsInMemory="5000" overflowToDisk="false" diskPersistent="false"
               timeToIdleSeconds="0" timeToLiveSeconds="300" memoryStoreEvictionPolicy="LRU" />
    
        <cache name="queryNews" eternal="true" maxElementsInMemory="5000" overflowToDisk="false" diskPersistent="false"
               timeToIdleSeconds="0" timeToLiveSeconds="300" memoryStoreEvictionPolicy="LRU" />
    
        <cache name="queryGroup" eternal="true" maxElementsInMemory="1000" overflowToDisk="false" diskPersistent="false"
               timeToIdleSeconds="0" timeToLiveSeconds="300" memoryStoreEvictionPolicy="LRU" />
    
        <cache name="queryByHtmlid" eternal="true" maxElementsInMemory="1000" overflowToDisk="false" diskPersistent="false"
               timeToIdleSeconds="0" timeToLiveSeconds="300" memoryStoreEvictionPolicy="LRU" />
    
        <cache name="query" eternal="true" maxElementsInMemory="1000" overflowToDisk="false" diskPersistent="false"
               timeToIdleSeconds="0" timeToLiveSeconds="300" memoryStoreEvictionPolicy="LRU" />
    
        <cache name="backQuery" eternal="true" maxElementsInMemory="1000" overflowToDisk="false" diskPersistent="false"
               timeToIdleSeconds="0" timeToLiveSeconds="300" memoryStoreEvictionPolicy="LRU" />
    
        <cache name="selectCount" eternal="true" maxElementsInMemory="1000" overflowToDisk="false" diskPersistent="false"
               timeToIdleSeconds="0" timeToLiveSeconds="300" memoryStoreEvictionPolicy="LRU" />
    
    </ehcache>
  • 相关阅读:
    面试常见问题
    Servlet上传下载
    Java五大框架
    Jquery
    JavaEE
    Html学习
    JavaSE高级
    面向过程基础
    Java开发软件安装及配置
    JAVA的类加载机制和Class类
  • 原文地址:https://www.cnblogs.com/liyafei/p/9369716.html
Copyright © 2011-2022 走看看