Spring Boot 1.3.8 @Profile 和属性

Spring Boot 1.3.8 @Profile and properties

我确实在 Spring 启动应用程序中使用配置文件。在我的 application.properties 中,我有这 3 个条目:

spring.profiles.active=prod
key1=demo. ...
key1=prod. ...

目前,我必须取消注释该行,具体取决于它是演示版还是生产版。 使用 Spring Boot 的配置文件有更好的方法吗?

是的,您可以创建 属性 个带有配置文件名称后缀的文件,并在那里转储配置文件的特定属性。

例如,

在你的 application-prod.properties 这个会去 key1=prod. ... 在你的 application-demo.properties 中,这个会 key1=demo. ...

并在启动服务器时传递此 java 参数 -Dspring.profiles.active=<profilename> 或设置环境变量 SPRING_PROFILES_ACTIVE=<profile_name>

这是如何实现的:

  1. 使用单个 application.properties 并具有以下格式的值:

    redis.host=${REDIS_HOST}
    redis.port=${REDIS_PORT}
    
  2. 现在对开发、暂存和生产环境使用不同的 .yml 文件,其中每个文件都有与特定环境相关的值。例如,dev.yml、staging.yml、prod.yml:

    // dev.yml
    REDIS_HOST=localhost
    REDIS_PORT=6379
    
    // staging.yml
    REDIS_HOST=staging-url
    REDIS_PORT=6576
    
    //prod.yml
    REDIS_HOST=produrl
    REDIS_PORT=5678
    
  3. 现在,运行为不同环境传递配置文件参数的应用程序:

    -Dspring.profiles.active=dev