1

1 つの springboot アプリケーションを 2 つの異なる redis インスタンスに接続しようとしています。1 つはデータベースとして使用され、もう 1 つはキャッシュとしてのみ使用されます。さまざまな接続ファクトリーと redis テンプレートをさまざまな名前で追加し、@Qualifier を使用してそれらをリンクしています。自動構成からクラス RedisAutoConfiguration を無効にしようとしましたが、何も機能しません。

私はいつもこのエラーを受け取ります:

ラップ: org.springframework.beans.factory.UnsatisfiedDependencyException: クラス パス リソース [org/springframework/boot/autoconfigure/data/redis/RedisAutoConfiguration$RedisConfiguration.class] で定義された名前 'redisTemplate' を持つ Bean の作成中にエラーが発生しました: を通じて表現された満たされていない依存関係タイプ [org.springframework.data.redis.connection.RedisConnectionFactory] ​​のインデックス 0 を持つコンストラクター引数: タイプ [org.springframework.data.redis.connection.RedisConnectionFactory] ​​の適格な Bean が定義されていません: 単一の一致する Bean が予想されますが、2 が見つかりました: redisCacheFactory、redisJitFactory; ネストされた例外は org.springframework.beans.factory.NoUniqueBeanDefinitionException: タイプ [org.springframework.data.redis.connection.RedisConnectionFactory] ​​の適格な Bean が定義されていません: 単一の一致する Bean が予想されますが、2 が見つかりました: redisCacheFactory,

これをどのように実装できるかについてのヒントを教えてください。

前もって感謝します!

4

1 に答える 1

2

問題は、connectionFactory を Bean として抽出することです。テンプレート Bean 内で宣言すると、正しく動作します。以下は私にとってはうまくいきます:

<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
    p:defaultSerializer-ref="stringRedisSerializer">
    <property name="connectionFactory">
       <bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
        p:host-name="${redis.ip}" p:port="6379" p:use-pool="true"/>
    </property>
</bean> 

<bean id="redisTemplate2" class="org.springframework.data.redis.core.RedisTemplate"
    p:defaultSerializer-ref="stringRedisSerializer">
    <property name="connectionFactory">
       <bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
        p:host-name="${redis.ip2}" p:port="6379" p:use-pool="true"/>
    </property>
</bean> 

    <bean id="stringRedisSerializer"  class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
于 2016-09-30T15:00:27.150 に答える