Search code examples
springredisspring-batchspring-jdbcspring-data-redis

Methods of JedisConnectionFactory is deprecated. Which XML configuations to used in Spring Batch?


I am developing an utility in Spring batch will read data from Mysql/Oracle and write it to the Redis database.

Currently we still using Spring Batch XML based configurations (we still like the XML based - gives little control to us :))

When I configured the following I see most of the methods are deprecated.

<bean id="redisDataSource" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <property name=""></property>
</bean>

using following versions of dependencies:

<properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-batch-vesion>4.0.1.RELEASE</spring-batch-vesion>
        <mysql.version>8.0.11</mysql.version>
        <logback.version>1.2.3</logback.version>
        <jcl.slf4j.version>1.7.25</jcl.slf4j.version>
        <quartz.version>2.2.1</quartz.version>
        <spring.version>5.0.0.RELEASE</spring.version>
        <lombok.version>1.18.0</lombok.version>
        <jedis.version>2.9.0</jedis.version>
</properties>

Could anyone please suggest XML based configurations which I should used to configured the dataSource ?

I've taken a reference from the link: https://docs.spring.io/spring-data/redis/docs/2.0.8.RELEASE/reference/html/, but its not clear to me.

STS snippet:

enter image description here


Solution

  • After lot of research and googling found the below useful links :

    1. Weird redis key with spring data Jedis
    2. Spring Data RedisTemplate: Serializing the Value and HashValue
    3. https://github.com/hantsy/spring-sandbox/blob/master/spring-cache/src/main/java/com/hantsylabs/example/spring/config/applicationContext-jpa-redis.xml
    4. Get Set value from Redis using RedisTemplate

    Here is the code snippet:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" 
        xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task" 
        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="  http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans.xsd  
          http://www.springframework.org/schema/util  http://www.springframework.org/schema/util/spring-util.xsd     
          http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx.xsd     
          http://www.springframework.org/schema/task  http://www.springframework.org/schema/task/spring-task.xsd">
    
       <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
          <property name="maxTotal" value="200" />
          <property name="maxIdle" value="50" />
          <property name="maxWaitMillis" value="3000" />
          <property name="testOnBorrow" value="true" />
       </bean>
    
       <bean id="jedisFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
          <property name="hostName" value="${redis_ip}" />
          <property name="port" value="${redis_port}" />
          <property name="poolConfig" ref="jedisPoolConfig" />
          <property name="usePool" value="true" />
       </bean>
    
       <bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer" />
       <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p:connection-factory-ref="jedisFactory" p:valueSerializer-ref="stringRedisSerializer"          
             p:keySerializer-ref="stringRedisSerializer" />
    </beans>
    

    Or Simply used https://docs.spring.io/spring-integration/reference/html/redis.html