这是在已经建好ssm框架的前提下整合的redsi,首先先发一下目录图:
第一步 在pom.xml里面添加jar
<!-- spring-redis实现 -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.6.2.RELEASE</version>
</dependency>
<!-- redis客户端jar -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
<!-- Ehcache实现,用于参考 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-ehcache</artifactId>
<version>1.0.0</version>
</dependency>
第二步:先在resources下建立一个reids的配置文件名为:redis.properties
#redis 一下配置的 ip和端口还有密码都是我redis服务器的 要换成你们自己的
#redis服务器ip 这是你的redsi服务器的ip
redis.host = 192.168.8.211
#redis服务器端口号 你的redis服务器的端口号
redis.port = 6379
#redis密码 没有设置密码的话可以不用此属性
redis.pass = 123456
#与服务器建立连接的超时时间
redis.timeout=3000
#jedis最大空闲连接数
redis.maxIdle = 5
redis.maxActive = 1024
#jedis池没有连接对象返回时,等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。
#如果超过等待时间,则直接抛出JedisConnectionException
redis.maxWait = 10000
#jedis的最大活跃连接数
redis.maxTotal=6000
redis.testOnBorrow = true
#设置选择reids的某个db 默认为0 可以不加此配置
redis.db=0
第三步 修改 spring-mybatis.xml文件 我再这里贴上我这个文件的全部代码 可以看着修改一下 或者直接复制过去 然后修改一下扫描的路径 比如开始的扫描路径和下面的mapper.xml的扫描路径还有dao层扫描路径
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<!-- 自动扫描 此处换成你自己的 下面还有两处-->
<context:component-scan base-package="com.software" />
<!-- 引入配置文件 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!-- <property name="location" value="classpath:jdbc.properties" /> -->
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
<value>classpath:redis.properties</value>
</list>
</property>
</bean>
<!-- 配置数据源 class="com.alibaba.druid.pool.DruidDataSource"-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!-- 初始化连接大小 -->
<property name="initialSize" value="${initialSize}"></property>
<!-- 连接池最大数量 -->
<property name="maxActive" value="${maxActive}"></property>
<!-- 连接池最大空闲 -->
<property name="maxIdle" value="${maxIdle}"></property>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${minIdle}"></property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="${maxWait}"></property>
</bean>
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描mapping.xml文件 此处也换成你自己的 下面还有一处-->
<property name="mapperLocations" value="classpath:com/software/mapping/*.xml"></property>
<!-- 开启缓存支持 -->
<property name="configurationProperties">
<props>
<!-- 开启关键-->
<prop key="cacheEnabled">true</prop>
<!-- 查询时,关闭关联对象即时加载以提高性能 -->
<prop key="lazyLoadingEnabled">false</prop>
<!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指定),不会加载关联表的所有字段,以提高性能 -->
<prop key="aggressiveLazyLoading">true</prop>
<!-- 对于未知的SQL查询,允许返回不同的结果集以达到通用的效果 -->
<prop key="multipleResultSetsEnabled">true</prop>
<!-- 允许使用列标签代替列名 -->
<prop key="useColumnLabel">true</prop>
<!-- 允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值),数据表的PK生成策略将被覆盖 -->
<prop key="useGeneratedKeys">true</prop>
<!-- 给予被嵌套的resultMap以字段-属性的映射支持 -->
<prop key="autoMappingBehavior">FULL</prop>
<!-- 对于批量更新操作缓存SQL以提高性能 -->
<prop key="defaultExecutorType">BATCH</prop>
<!-- 数据库超过25000秒仍未响应则超时 -->
<prop key="defaultStatementTimeout">25000</prop>
</props>
</property>
</bean>
<!-- DAO接口所在包名,Spring会自动查找其下的类 这里也换成你自己的 这是第三处-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.software.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!--设置连接池-->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="${redis.maxIdle}"/>
<property name="maxTotal" value="${redis.maxTotal}" />
<property name="maxWaitMillis" value="${redis.maxWait}" />
<property name="testOnBorrow" value="${redis.testOnBorrow}" />
<!-- <property name="testOnReturn" value="${redis.testOnReturn}" /> -->
</bean>
<!--设置链接属性 p:database="${redis.db}" 这一个注解为设置选择某个reids的dp,可以不加 默认选择第0个-->
<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:hostName="${redis.host}"
p:port="${redis.port}"
p:password="${redis.pass}"
p:database="${redis.db}"
p:pool-config-ref="poolConfig"
p:timeout="100000"/>
<!-- Jedis模板配置 -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
<property name="connectionFactory" ref="connectionFactory" />
</bean>
</beans>
最后我在贴一下我的jdbc.properties的代码 方便你们与 spring-mybatis.xml里面的代码最对比
driver=com.mysql.jdbc.Driver
#本地
url=jdbc:mysql://localhost:3306/caesar?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username=root
password=root
#定义初始连接数
initialSize=0
#定义最大连接数
maxActive=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000
最后一步 进行测试 我贴两个代码 一个是使用junit进行测试的代码 一个是在controlelr里面测试的 是为了方便没有配置junit的朋友测试的 先贴junit的测试代码
首先在src/test/java下面建一个测试类
package software;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.alibaba.fastjson.JSON;
import com.software.entity.User;
import com.software.serivce.TestService;
/**
* 测试类
* @author 史**
*
* 2019年1月30日
*/
@RunWith(SpringJUnit4ClassRunner.class) //表示继承了SpringJUnit4ClassRunner类
@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})
public class TestMyBatis {
//日志 如果没有的可以不加
private static Logger logger = Logger.getLogger(TestMyBatis.class);
@Resource
private RedisTemplate redisTemplate;
@Test
public void test1() {
//先给redis里面赋值
redisTemplate.opsForValue().set("chen", "测试redis");
//在日志里打印 从reids里取出的数据
logger.info("value:"+redisTemplate.opsForValue().get("chen"));
//在控制台打印从reids里取出的数据
System.out.println("完毕"+redisTemplate.opsForValue().get("chen"));
}
}
然后在贴一下在controller里面的测试
package com.software.controller;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.software.entity.User;
import com.software.serivce.TestService;
import redis.clients.jedis.Jedis;
@Controller
@RequestMapping("/test")
public class testController {
private static Logger log=LoggerFactory.getLogger(testController.class);
//必须
@Resource
private RedisTemplate redisTemplate;
@RequestMapping("/testIndex")
@ResponseBody
public void testIndex() {
System.out.println("走");
//向redsi里面放值
redisTemplate.opsForValue().set("fu", "我用来测试redis的");
//打印取值
System.err.println("redis输出"+redisTemplate.opsForValue().get("fu"));
}
}
这是控制台输出:
到这里就结束了 如果有需要别的代码的朋友可以说 然后我会继续贴在这里