使用Spring Boot来创建仅在开发环境有效的配置文件
我希望在开发环境中创建一个仅有效的Spring Boot配置文件。
環境プロファイルが有効になってほしいかIDE (IntelliJ) とかの組み込み機能で Debug/Run 実行YesGradle bootRunYesassemble した jar を実環境で runNo
重要的是,希望可以在默认情况下(用户无需进行任何操作)完成这件事。
我找到了一种方法。
-
- spring-boot-devtools を入れておく
- build 時に devtools jar を取り除く。 gradle なら以下の用に書く。
springBoot {
excludeDevtools = true // fat jar にまとめたときには、devtools を取り除く
}
dependencies {
// ...
runtime 'org.springframework.boot:spring-boot-devtools:1.4.1.RELEASE'
// 間違って使わないように、runtime スコープに入れた方がいい
}
- spring-boot-devtools クラスが存在するかどうかで、条件分岐。例えば、
@SpringBootApplication
public class Application {
public static void main(String... args) throws Exception {
final SpringApplication springApplication = new SpringApplication(Application.class);
if (isDeveloping()) { // 開発環境では
springApplication.setAdditionalProfiles("developing"); // developing プロファイルを追加
}
springApplication.run(args);
}
private static boolean isDeveloping() {
return ClassUtils.isPresent("org.springframework.boot.devtools.settings.DevToolsSettings",
ClassLoader.getSystemClassLoader());
// DevToolsSettings クラスがあれば、開発中。
}
}