java - Spring:使用@Qualifier和@Profile

标签 java spring

我有一个组件类(让我们在MyService中类),它由@Qualifier(US)标记。

由于该组件需要 application.yml 文件中存在一些值,因此我还使用 @Profile({"default", "qual"}) 标记了该类获取类的某些内部属性的正确值。

问题,当我针对此特定限定符(美国)执行 cucumber 测试时,程序会抛出以下错误发生意外的内部服务器错误:没有名为“US”的可用 bean:找不到与限定符“匹配的 MyService bean” US' - 限定符不匹配,bean 名称也不匹配!

所以,我对此的理解是,注释 @Qualifier@Profile 不能一起工作。是对的吗?或者我是否错过了在同一类中使用它们的东西?

最佳答案

@Qualifer

This annotation may be used on a field or parameter as a qualifier for candidate beans when autowiring.

@Profile

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/

相关文章:

java - java中什么情况下控件从Filter传递给Servlet?

java - 您如何使用 Spring Integration 处理 EmptyResultDataAccessException?

java - Spring MVC URL 映射

java - 从 ContentProviderResult[] 中删除失败还是成功?

java - 如何修复以下代码以便获得输出的反向链表?

java - 线程同步中的 While 与 If

java - gradle 构建模型时出错

java - 如何打破对接口(interface)的强依赖?

java - 如果 Couchbase 连接失败,如何在运行时禁用缓存?

java - Wildfly 有一个在后台运行的持续运行的进程