春季:使用@Qualifier和@Profile

时间:2020-02-18 16:28:39

标签: java spring

我有一个由MyService标记的组件类(在@Qualifier(US)中为类)。

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

问题,当我为此特定限定符(US)执行黄瓜测试时,程序抛出以下错误An unexpected internal server error occurred: No bean named 'US' available: No matching MyService bean found for qualifier 'US' - neither qualifier match nor bean name match!

因此,据我所知,注解@Qualifier@Profile不能一起使用。是对的吗?还是我想念一些东西在同一堂课上使用它们?

1 个答案:

答案 0 :(得分:1)

@Qualifer

此注释可以在字段或参数上用作限定符 自动装配时选择候选bean。

@Profile

表示某个组件符合以下条件时可以注册 更多指定的配置文件处于活动状态。

带有以下批注的类

@Service
@Qualifier("US")
@Profile({"default", "qual"})
public class MyService {
...}

仅在“默认”或“合格”配置文件处于活动状态时才能注册MyService Bean,然后在该Bean上可以使用限定符“ US”自动接线

@Autowired
@Qualifer("US")
private MyService myService;

@Value可用于注入属性

@Value(${some.name})
private String name;