如何解决当我有两个 @Bean 时,我应该把 @Qualifier 放在哪里?
所以我有两个 bean 用于 redis 连接,并且我正在尝试指定使用 redisB 的特定时间。如果我是对的,我需要把 @Qualifier("redisB") 放在某个地方,但我不确定把它放在哪里。
第一个豆
@Bean("default")
@Primary
public LettuceConnectionFactory redisConnectionFactory(){
...
}
第二个豆
@Bean("redisB")
public LettuceConnectionFactory redisConnectionFactory(final RedisProperties redisProperties){
...
}
解决方法
@Qualifier Annotation 用于消除两个相同类类型 bean 的 INJECTION 期间的歧义。所以我对设置redis连接不是很熟悉,但是在注入bean时会使用@Qualifier Annotation,而不是在您显示的bean声明位置的代码中。
例如,如果另一个对象(如 RedisTemplate)在其构造函数中需要一个 redisConnectionFactory 并且您想指定要使用哪个 redisConnectionFactoryBeans 则如下所示。
@Bean("redisBTemplate")
public StringRedisTemplate stringRedisTemplate(@Qualifier("redisB") LettuceConnectionFactory redisConnectionFactory) {
return new StringRedisTemplate(redisConnectionFactory);
}
这是一个示例,您将如何使用它来将它注入另一个 bean,但是您可以在任何时候想要注入那些 connectionFactory bean 中的一个来指定要注入哪个 bean 时使用 @Qualifier。它不会在 bean 声明期间使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。