Spring 配置文件不明确

Spring profiles ambiguity

我有两个实现相同接口的@Component bean。有一个配置文件注释,另一个没有,如下所示。

@Component
@Profile("mock")
public class CompMock implements Comp {...}

@Component
public class CompReal implements Comp {...}

如果我 运行 带有 -Dspring.profiles.active=mock 的应用程序,为什么连接第二个 bean 而不是第一个用 Profile("mock") 明确注释的 bean?

@Profile("mock") 表示包含,如果配置文件是 "mock"。就这样。 @Profile 不表示偏好。

有多种方法可以解决您的问题,包括将 @Profile("!mock") 添加到 CompReal