maven和spring在maven的配置文件里面有很多坑,搞了很久才弄出来了,这里总结一下坑点
首先是spring-data-redis和jedis版本的坑,这两个版本要刚好配上才能用,一个高版本一个低版本可能会没有类的实例的错误,反正就是各种报错,查了很多博客加自己挑了半天版本发现spring-data-redis 1.4.2.RELEASE和jedis 2.5.2可以用,就先用着了,这个是4.0.9版本的,高版本太多坑了只好将降低版本来用了(最底下补充有spring core 5.0.7版本的)。
然后是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整合花了差不多半天,几乎把所有的坑都给踩了,最后还是搞出来了,功夫不负有心人,收获还是蛮大的。
补充:经过调试后终于把spring-data-redis和jedis调到了高版本(spring core 5.0.7),另外还加了jackson-databind依赖用于GenericJackson2JsonRedisSerializer的反序列化
pom.xml
<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>2.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.7.RELEASE</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.10.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.7.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>