spring框架与redis整合,坑点总结

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>
    原文作者:likeghee
    原文地址: https://segmentfault.com/a/1190000020526453
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞