我有一个组件类(让我们在MyService
中类),它由@Qualifier(US)
标记。
由于该组件需要 application.yml
文件中存在一些值,因此我还使用 @Profile({"default", "qual"})
标记了该类获取类的某些内部属性的正确值。
问题,当我针对此特定限定符(美国)执行 cucumber 测试时,程序会抛出以下错误发生意外的内部服务器错误:没有名为“US”的可用 bean:找不到与限定符“匹配的 MyService bean” US' - 限定符不匹配,bean 名称也不匹配!
所以,我对此的理解是,注释 @Qualifier
和 @Profile
不能一起工作。是对的吗?或者我是否错过了在同一类中使用它们的东西?
最佳答案
This annotation may be used on a field or parameter as a qualifier for candidate beans when autowiring.
Indicates that a component is eligible for registration when one or more specified profiles are active.
具有以下注释集的类
@Service
@Qualifier("US")
@Profile({"default", "qual"})
public class MyService {
...}
仅当“default”或“qual”配置文件处于 Activity 状态时才会注册 MyService bean,然后在 bean 上可以使用限定符“US” Autowiring
@Autowired
@Qualifer("US")
private MyService myService;
@Value可用于注入(inject)属性
@Value(${some.name})
private String name;
关于java - Spring:使用@Qualifier和@Profile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60285420/