java - Spring:根据配置文件选择@Service

标签 java spring autowired spring-profiles

我有一个接口(interface)定义如下:

public interface MyService {
}

还有两个实现它的类:

@Service
@Profile("dev")
public class DevImplementation implements MyService {
}

@Service
@Profile("prod")
public class ProdImplementation implements MyService {
}

还有另一个服务试图使用它:

@Service
public MyClass {
    @Autowired
    MyService myservice;
}

问题是我在运行代码时收到 NoSuchBeanException。它使用

运行

mvn spring-boot:run -P dev

我做错了什么?

最佳答案

使用 -P 可以启用 Maven 配置文件。但是 Maven 配置文件独立于 Spring 配置文件。只要您没有配置 Maven 配置文件来设置适当的 Spring 属性,您就必须以这种方式启用 Spring 配置文件:

mvn spring-boot:run -Dspring.profiles.active=dev

关于java - Spring:根据配置文件选择@Service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41891728/

相关文章:

java - 应用程序显示空白屏幕但预览看起来不错

java - Win 8 平台上的 Swing 应用

java - 从 Java 应用程序中检索 SVN 存储库列表

java - Spring中枚举中如何 Autowiring 服务

java - Spring 3 的最佳 View 层是什么?

spring - 单例和 @Autowired 返回 NULL

java - SSD 损坏可以更改 txt 文件中的字符吗?

java - 评估 spring web flow 中的表达式

Spring Boot - Spring组件中的@Configuration类为null

java - Spring可以处理POJO吗?