当我有两个@bean时,我应该把@qualifier放在哪里?

col17t5w  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(783)

所以我有两个用于redis连接的bean,我正在尝试指定使用redisb的特定时间。如果我是正确的,我需要把@qualifier(“redisb”)放在某个地方,但我不确定放在哪里。
第一粒豆子

@Bean("default")
@Primary
public LettuceConnectionFactory redisConnectionFactory(){
...
}

第二个豆子

@Bean("redisB")
public LettuceConnectionFactory redisConnectionFactory(final RedisProperties redisProperties){
...
}
afdcj2ne

afdcj2ne1#

@qualifier注解用于在注入相同类类型的两个bean期间消除歧义。因此,我对设置redis连接不是很熟悉,但是@qualifier注解将在注入bean时使用,而不是在声明bean的代码中使用。
例如,如果另一个对象(如redistemplate)在其构造函数中需要redisconnectionfactory,并且您希望指定要使用的redisconnectionfactorybean中的哪一个看起来像这样。

@Bean("redisBTemplate")
public StringRedisTemplate stringRedisTemplate(@Qualifier("redisB") LettuceConnectionFactory redisConnectionFactory) {
 return new StringRedisTemplate(redisConnectionFactory);
}

这是一个如何使用它将其注入另一个bean的示例,但是您可以在任何时候使用@qualifier来注入这些connectionfactory bean中的一个,以指定要注入哪个。它不会在bean声明期间使用。

相关问题