调用方法取决于spring引导中的环境



我有两个方法,实现方式因环境(dev/prod(而异。使用application.properties中的变量是个好主意吗?例如:

production-mode:true

并使用它:

@Value("${production-mode}")
private boolean isProd;
...
if (isProd) {
methodForProduction();
} else {
methodForDevelopment();
}

你有什么建议吗?或者你能告诉我一些有用资源的方向吗?

Spring引导附带了一个配置文件管理系统,允许您根据这些配置文件激活或交换功能和行为。这是官方文件的链接。

你可以做的是创建一个接口和2个这样的实现:

public interface MyClass {
void myMethod();
}
public class MyClassForDevelopment implements MyClass {
@Override
public void myMethod() { // your code for developement }
}
public class MyClassForProduction implements MyClass {
@Override
public void myMethod() { // your code for production }
}

并使用Spring引导的配置如下:

@Configuration
public class MyConfiguration {
@Bean
@Profile("dev")
public MyClass myClassDev() { return new MyClassForDevelopment(); }
@Bean
@Profile("prod")
public MyClass myClassProd() { return new MyClassForProduction(); }
}

最新更新