共计 3091 个字符,预计需要花费 8 分钟才能阅读完成。
maven 和 spring 在 maven 的配置文件里面有很多坑,搞了很久才弄出来了,这里总结一下坑点
首先是 spring-data-redis 和 jedis 版本的坑,这两个版本要刚好配上才能用,一个高版本一个低版本可能会没有类的实例的错误,反正就是各种报错,查了很多博客加自己挑了半天版本发现 spring-data-redis 1.4.2.RELEASE 和 jedis 2.5.2 可以用,就先用着了,这个是 4.0.9 版本的,高版本太多坑了只好将降低版本来用了(我哭了)。
然后是 spring-test 版本选取 4.0.9.RELEASE 和 总体 spring 框架版本保持一致
junit 用 4.10 以上的版本,4.12 开始加了很多新的东西,我用了 4.12
要加上 commons-logging 依赖,版本的话选 1.2 的话没问题,不加会报错
这个是 pom.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.java.uuz</groupId>
<artifactId>eral</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.4.2.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.5.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.0.9.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
接下来是 applicationContext.xml,坑也挺多的,我基本上能踩的都踩了
首先 spring 是 p 标签引入,引入这个才能用 p: 写在 bean 那里
xmlns:p="http://www.springframework.org/schema/p"
第二个是配置 JedisConnectionFactory,第一个坑是 hostName、port,IP 和端口要填对,不然连不上,第二个坑是 poolConfig-ref,poolConfig-ref 容易写成 poolConfig,注意不要写错了
第三个坑在配置 RedisTemplate,connectionFactory-ref 容易写成 connectionFactory
这个是 applicationContext.xml
hostName port password 自己填上就好
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="1000"/>
<property name="minIdle" value="100"/>
<property name="maxIdle" value="500"/>
<property name="maxWaitMillis" value="10000"/>
<property name="blockWhenExhausted" value="true"/>
<property name="testOnReturn" value="true"/>
<property name="testOnBorrow" value="true"/>
</bean>
<bean id="jedisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:poolConfig-ref="jedisPoolConfig"
p:usePool="true"
p:hostName=""p:port=""
p:password=""p:database="10"
>
</bean>
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
p:connectionFactory-ref="jedisConnectionFactory"
>
</bean>
</beans>
接着的坑点在写测试类
关联 xml 文件这里 classpath 要带上
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
这里的 Resource 的引入是 javax.annotation.Resource;
@Resource
private RedisTemplate<String, Object> redisTemplate;
最后坑点
检查一下服务器的 redis 有没有开,不要全部做完了忘记开 redis,反正我是这么蠢蠢的..
最后:自己写这个 spring 和 redis 整合花了差不多半天,几乎把所有的坑都给踩了,最后还是搞出来了,功夫不负有心人,收获还是蛮大的。