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整合花了差不多半天,几乎把所有的坑都给踩了,最后还是搞出来了,功夫不负有心人,收获还是蛮大的。