spring框架与redis整合坑点总结

44次阅读

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

正文完
 0