Selon this answer, un RedisTemplate
ne peut pas prendre en charge plusieurs sérialiseurs pour les valeurs. Je veux donc créer plusieurs RedisTemplates pour différents besoins, en particulier un pour les actions de chaîne et un pour les sérialisations JSON, à utiliser dans RedisCacheManager
. J'utilise Spring Boot et le RedisTemplate
actuel est autowired, je me demande quelle est la bonne façon de déclarer une seconde instance RedisTemplate
partage la même usine de connexion Jedis, mais a ses propres sérialiseurs?Comment créer une seconde instance RedisTemplate dans une application Spring Boot
ai essayé quelque chose comme ça en deux composants différents,
Composante 1 déclare,
@Autowired
private RedisTemplate redisTemplate;
redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer(Instance.class));
Composante 2 déclare,
@Autowired
private StringRedisTemplate stringRedisTemplate;
Dans ce cas, les deux modèles sont en fait la même chose. Tracé dans le code Spring et le modèle du composant 1 trouvé a été résolu en autoconfiguré stringRedisTemplate
.
Le constructeur de RedisTemplate
appelant manuellement puis son afterPropertiesSet()
ne fonctionnera pas non plus car il se plaint qu'aucune usine de connexion ne peut être trouvée. Je sais que cette requête ne représente probablement pas une grande différence par rapport à la définition d'un autre bean dans une application Spring, mais je ne suis pas sûr de l'intégration actuelle de Spring-Data-Redis. S'il vous plaît, aidez, merci.
Merci beaucoup, cela résout mon problème. Une question de suivi est quand je déclare un bean comme ceci, comment Spring sait passer dans la RedisConnectionFactory désirée pour moi? Cela est probablement dû au fait que je me familiarise avec le mécanisme de Spring, et j'apprécie si vous pouvez me renseigner à ce sujet. – Derek
Lorsqu'il n'y a qu'une seule fabrique de connexions, pas de soucis. S'il y en a plusieurs, vous devez les qualifier à nouveau, sinon vous finirez par 'NoUniqueBeanDefinitionException'. – mp911de