1, 项目实在springboot 集成mybatis 的基础上的:
2,pom 如下,有的不需要加,只需要加下ehcache 相关就行
org.springframework.boot spring-boot-starter-parent 2.0.0.RELEASE org.projectlombok lombok org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.apache.tomcat.embed tomcat-embed-jasper org.springframework.boot spring-boot-starter-log4j 1.3.8.RELEASE org.springframework.boot spring-boot-starter-aop commons-lang commons-lang 2.6 org.apache.httpcomponents httpclient com.alibaba fastjson 1.2.47 javax.servlet jstl taglibs standard 1.1.2 org.springframework.boot spring-boot-starter-cache net.sf.ehcache ehcache 2.9.1 org.mybatis.spring.boot mybatis-spring-boot-starter 1.1.1 mysql mysql-connector-java
3,需要缓存的方法上加上注解
@Cacheable 在类上给缓存加上名字
@CacheConfig(cacheNames = "userCache")
package com.aiyuesheng.mapper;import org.springframework.cache.annotation.CacheConfig;import org.springframework.cache.annotation.Cacheable;import com.aiyuesheng.entity.User;@CacheConfig(cacheNames = "userCache")public interface UserMapperdb { void insertUser(User user); @Cacheable User selectUserById(int id);}
4,启动类上加上读取缓存
@EnableCaching@MapperScan("com.aiyuesheng.mapper")@SpringBootApplicationpublic class App { public static void main(String[] args) { SpringApplication.run(App.class, args); }}
5,设置了缓存的名字userCache,那么这个缓存的参数在哪里?
在配置文件:ehcache.xml
6,在application.yml 定义去读取这个文件
#单数据源spring: datasource: url: jdbc:mysql://127.0.0.1:3306/testdb username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver mybatis: mapper-locations: classpath:com/aiyuesheng/mapping/*Mapper.xml type-aliases-package: com.aiyuesheng.entity # 缓存配置读取cache: type: ehcache ehcache: config: classpath:ehcache.xml
7,配置OK ,缓存里面有数据,他就会读取缓存里面的值。
8,配置信息解读
指定数据(.data and .index)存储位置,可指定磁盘中的文件夹位置期
maxElementsInMemory="1000" 在内存中缓存的element的最大数目
eternal="false" 设定缓存的elements是否永远不过期。如果为true,则缓存的数据始终有效,如果为false那么还要根据timeToIdleSeconds,timeToLiveSeconds判断。 timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" 如果内存中数据超过内存限制,是否要缓存到磁盘上。 diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000" diskPersistent="false" 否在磁盘上持久化。指重启jvm后,数据是否有效。默认为false。 diskExpiryThreadIntervalSeconds="120" 对象检测线程运行时间间隔。标识对象状态的线程多长时间运行一次。 memoryStoreEvictionPolicy="LRU"> 缓存策略。默认值LRU,可选FIFO、LFU。