この回答によるとRedisTemplate
、値に対して複数のシリアライザーをサポートすることはできません。そのため、さまざまなニーズに合わせて複数の RedisTemplates を作成したいと考えています。具体的には、1 つは文字列アクション用、もう 1 つはオブジェクトから JSON へのシリアライゼーション用で、RedisCacheManager
. 私は Spring Boot を使用しており、現在は自動配線されています。同じ Jedis 接続ファクトリを共有しているが、独自のシリアライザーをRedisTemplate
持つ 2 番目のインスタンスを宣言する正しい方法は何だろうか?RedisTemplate
2つの異なるコンポーネントでこのようなことを試しましたが、
コンポーネント 1 は次のように宣言します。
@Autowired
private RedisTemplate redisTemplate;
redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer(Instance.class));
コンポーネント 2 は次のように宣言します。
@Autowired
private StringRedisTemplate stringRedisTemplate;
この場合、2 つのテンプレートは実際には同じです。Spring コードをトレースすると、コンポーネント 1 のテンプレートが autoconfigured に解決されていることがわかりましたstringRedisTemplate
。
RedisTemplate
のコンストラクタを手動で呼び出しafterPropertiesSet()
ても、接続ファクトリが見つからないと不平を言うため、機能しません。
このリクエストはおそらく、Spring アプリで別の Bean を定義することと大きな違いはないことはわかっていますが、現在の Spring-Data-Redis 統合では、何が最善の方法なのかわかりません。助けてください、ありがとう。