gpt4 book ai didi

java - 如何添加@Qualifier

转载 作者:行者123 更新时间:2023-12-02 13:15:30 24 4
gpt4 key购买 nike

如何添加限定符来区分这两个 bean?我知道我需要使用 @Qualifier 注释,但我不确定如何将它添加到 bean 中,然后如何引用适当的 bean 创建 Autowiring 对象。

@Configuration
@Slf4j
@PropertySources(PropertySource("classpath:application.properties"),
PropertySource(value = ["file:\${credentials.config}"]))
class CredentialsConfig(@Autowired private val env: Environment) {

@Bean fun getCredentials(): Credentials? {
val user: String = env.getRequiredProperty("user1")
val pass: String = env.getRequiredProperty("pass1")
return Credentials.info(user, pass)
}

@Bean fun getCredentials2(): Credentials {
val user: String = env.getRequiredProperty("user2")
val pass: String = env.getRequiredProperty("pass2")
return Credentials.info(user, pass)
}
}

最佳答案

在这种情况下,我发现明确命名我的 bean 是有益的,这样我选择哪一个就更清楚了。否则,您最终将得到 Spring 决定调用它的内容(基于方法名称)。当我们想注入(inject)一个 bean,但有多个 bean 时,我们使用 @Qualifer注入(inject)点的注解,指定我们关心的bean的名称。
所以...

// In CredentialsConfig

@Bean("firstCredentials) fun firstCredentials(): Credentials = TODO()
@Bean("secondCredentials) fun secondCredentials(): Credentials = TODO()
在其中一个接线时,您可以添加 @Qualifier选择你的具体实现(注意,如果你使用构造函数注入(inject),你不需要 @Autowired ):
@Component
class MyComponent(@Qualifier("firstCredentials") creds: Credentials) { ... }

关于java - 如何添加@Qualifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64429022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com