spring-data-redis
jedisを単体で使っていたがspring-dataをmysqlで使っていたので組み合わせて使おうとしたが・・
環境
spring4+maven3
java8
maven設定
spring-data-redisを追加宣言。
ちなみにspring-data-redisを使う際にはjedisの定義は必須で単体定義では使用できません。
またjedisバージョン2.4以降ではcommons-pool2が必須です。
これを定義しないとNoClassDefFoundErrorとなるため注意。
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.6.1.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4</version>
</dependency>
applicationContext.xml設定
下記はimport用のためredis.xmlで必要な宣言のみです。
redis.xml
<bean id="jedisConnFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="localhost"
p:port="6379"
p:password=""
p:use-pool="true"
p:pool-config-ref="jedisPoolConfig" />
<bean id="redisTemplate"
class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnFactory"/>
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"
p:maxTotal="150"
p:minIdle="5"
p:maxIdle="15"/>
実行するが・・
nested exception is java.lang.ClassNotFoundException: redis.clients.jedis.JedisPoolConfig
解決方法
試行錯誤の上、依存関係の問題か全て最新バージョンにすると正常動作しないようなので、下記のようにバージョンダウンして対応。
- spring-data-redis -> 1.4.0.RELEASE
- jedis -> 2.6.0
- common-pool2 -> 2.3
ちょっとすっきりしませんが、取り急ぎ動作確認は完了。
spring-data-redisはバージョンによって必要なライブラリやそのバージョンが異なるため注意が必要です。
jedis単体でも実用には問題無いですが、spring-dataと組み合わせることで
springが提供しているコネクションプールなどが使えるため非常に便利です。