SSM 整合Mybatics 实现Redis 二级缓存配置
1 配置mybatics sqlSessionFactory 的时候 ,配置redis缓存
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations"> <list> <value>classpath:testMaven/com/qian/mapper/*.xml</value> </list> </property> <property name="configLocation" value="classpath:myBatis.xml"/> <!-- 配置redis缓存 --> </bean>
2 上述 mybatis.xml 中 配置具体的 redis 二级缓存
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <!-- mybatics日志开启 --> <setting name="logImpl" value="LOG4J"/> <!-- 二级缓存开启 --> <setting name="cacheEnabled" value="true"/> <!-- 这个配置使全局的映射器启用或禁用缓存 --> <setting name="lazyLoadingEnabled" value="false"/> <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 --> <setting name="aggressiveLazyLoading" value="true"/> <setting name="defaultStatementTimeout" value="25000" /> <!-- 设置超时时间,它决定驱动等待一个数据库响应的时间。 --> </settings> <!-- 配置映射类的别名 --> <typeAliases> <!-- 配置entity下的所有别名 别名首字母小写 --> <package name="testMaven.com.qian.bean" /> </typeAliases> </configuration>
3 redis 的详细配置
<!-- ********************************************************redis配置启动配置 start***************************************************************************** --> <!-- redis数据源 --> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis.maxIdle}" /> <property name="maxTotal" value="${redis.maxActive}" /> <property name="maxWaitMillis" value="${redis.maxWait}" /> <property name="testOnBorrow" value="${redis.testOnBorrow}" /> </bean> <!-- redis连接池配置,类似数据库连接池 --> <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" > <property name="hostName" value="${redis.host}"></property> <property name="port" value="${redis.port}"></property> <property name="password" value="${redis.pass}"></property> <!-- redis默认共有16个库,使用配置使用几号库,默认使用的是0号库 --> <property name="database" value="${redis.database}"></property> <property name="poolConfig" ref="poolConfig"></property> </bean> <!-- 调用redis连接池工厂配置 --> <bean id="redisTemplate" class=" org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="connectionFactory"></property> <!-- 如果不配置Serializer,那么存储的时候智能使用String,如果用User类型存储,那么会提示错误User can't cast to String!!! --> <property name="keySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> <property name="valueSerializer"> <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" /> </property> </bean> <!-- 使用中间类解决RedisCache.jedisConnectionFactory的静态注入,从而使MyBatis实现第三方缓存 --> <bean id="redisCacheTransfer" class="testMaven.com.qian.util.redisCache.RedisCacheTransfer"> <property name="jedisConnectionFactory" ref="connectionFactory"/> </bean> <!-- *****************************************redis配置启动配置 end****************************************** -->注意 : 上述 最后的 redisCacheTransfer的 配置 还是相当重要的 : 如下图所示 RedisCache 是我们具体实现 Redis 的 Cache(缓存) 功能的实现类
而 其 jedisConnertionFactory 就是通过 RedisCacheTransfer 实现 静态注入的
4 就简单了, 不要忘记你接口 对应的 mapper.xml 中加上这一行代码
另外 附: logj 简单配置
#定义LOG输出级别 ========================================================================================================================= log4j.rootLogger=INFO,Console,File #定义日志输出目的地为控制台================================================================================================================ log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out #可以灵活地指定日志输出格式,下面一行是指定具体的格式 log4j.appender.Console.layout = org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n #文件大小到达指定尺寸的时候产生一个新的文件================================================================================================== log4j.appender.File = org.apache.log4j.RollingFileAppender #指定输出目录 log4j.appender.File.File = E:/learn/testMavenRedis/logs/ssm.log #定义文件最大大小 log4j.appender.File.MaxFileSize = 10MB # 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志 log4j.appender.File.Threshold = ALL log4j.appender.File.layout = org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n ####显示本项目SQL语句部分testMaven.com.qian为路径============================================================================================ log4j.logger.testMaven.com.qian=DEBUG