使用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 クラスがあれば、開発中。
    }
}
广告
将在 10 秒后关闭
bannerAds