1

スプリング ブートで 3 つのプロファイルをセットアップしたいと思います: 外部構成ファイルを使用して、運用、開発、テストです。

アプリケーション クラス:

@SpringBootApplication
public class Application {

    public static void main(String[] args){
        SpringApplication.run( Application.class, args );
    }
}

AppConfig クラス:

@Configuration
@PropertySources({
        @PropertySource("config/application.yml"),
        @PropertySource(value = "file:${external.config}")
})

@ConfigurationProperties
public class AppConfig {

}

config/application.yml:

---
spring.profiles: production
endpoints.enabled: false
---
spring.profiles: development,test
endpoints.enabled: true
info.version: @project.version@
info.test: Test dev or test
info.profile: ${spring.profiles.active}
---

external.config: ${user.home}/.myapp/application.properties

.myapp/application.properties:

spring.profiles.active=production
info.version=5

spring-boot-actuator /info の出力

{
  version: "5",
  test: "Test dev or test",
  profile: "production"
}

期待される出力:

404 because of the endpoints.enabled: false

spring-boot-actuator /env

spring.profiles.active: "production"
4

1 に答える 1

1

おそらく、application.yml ファイルの前にプレフィックスを付ける必要があります。classpath:

いずれにせよ、Spring プロファイルを使用して Java 構成で構成を直接駆動しないのはなぜですか? IMO、これはよりクリーンになり、プロパティがよりタイプセーフになり、リファクタリングしやすくなり、スペルミスが発生しにくくなります。

アップデート:

@PropertySourceドキュメントによると、注釈付きの yml ファイルをロードすることはできません。

http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-yaml-shortcomings

したがって、ファイルを使用する必要がある場合は、単純なプロパティ ファイルを使用する必要があります。ここに示すプロパティ固有のアプリケーション プロパティ ファイルを使用できます。

application.properties ファイルに加えて、命名規則 application-{profile}.properties を使用してプロファイル固有のプロパティを定義することもできます。

于 2015-09-12T10:59:24.990 に答える