Java Spring:使用@Qualifier&@轮廓
我有一个组件类(让我们在Java Spring:使用@Qualifier&@轮廓,java,spring,Java,Spring,我有一个组件类(让我们在MyService中进行分类),它由@Qualifier(US)标记 由于该组件需要application.yml文件中存在一些值,因此我还使用@Profile({“default”,“qual”})标记该类,以获得该类某些内部属性的正确值 问题,当我为这个特定的限定符(US)执行cucumber测试时,程序抛出以下错误发生了一个意外的内部服务器错误:没有名为“US”的bean可用:没有为限定符“US”找到匹配的MyService bean-既没有限定符匹配,也没有bea
MyService
中进行分类),它由@Qualifier(US)
标记
由于该组件需要application.yml
文件中存在一些值,因此我还使用@Profile({“default”,“qual”})
标记该类,以获得该类某些内部属性的正确值
问题,当我为这个特定的限定符(US)执行cucumber测试时,程序抛出以下错误发生了一个意外的内部服务器错误:没有名为“US”的bean可用:没有为限定符“US”找到匹配的MyService bean-既没有限定符匹配,也没有bean名称匹配代码>
因此,我对这一点的理解是,注释@Qualifier
&@Profile
不能一起工作。是这样吗?还是我错过了在同一堂课上同时使用这两种语言的机会?
此注释可在字段或参数上用作
自动连线时的候选bean
指示当一个或多个组件
更多指定的配置文件处于活动状态
具有以下注释集的类
@Service
@Qualifier("US")
@Profile({"default", "qual"})
public class MyService {
...}
将仅在“default”或“qual”配置文件处于活动状态时注册MyServicebean,然后可以在bean上使用限定符“US”自动连接
可以用于注入属性
@Value(${some.name})
private String name;
配置文件不是用来获取值的——它是用来指定在特定条件下要部署的应用程序部分。您的错误意味着您使用不同的配置文件运行测试,因此您的合格bean没有部署到应用程序上下文。如果提供了bean元素的profile属性,例如,除非至少激活了配置文件“p1”或“p2”,否则将不会解析bean元素。同样,如果@组件
或@配置
类标记有@Profile({“p1”,“p2”}),则除非至少激活了Profile“p1”或“p2”,否则不会注册或处理该类
@Value(${some.name})
private String name;