我确实在我的 Spring Boot 应用程序中使用了配置文件。在我的 application.properties 我有这 3 个条目:
spring.profiles.active=prod
key1=demo. ...
key1=prod. ...
目前,我必须根据它是演示版还是生产版来取消注释该行。有没有更好的方法使用 Spring Boot 的配置文件来做到这一点?
我确实在我的 Spring Boot 应用程序中使用了配置文件。在我的 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>
或设置 env 变量SPRING_PROFILES_ACTIVE=<profile_name>
这是如何实现的:
使用单个 application.properties 并具有以下格式的值:
redis.host=${REDIS_HOST}
redis.port=${REDIS_PORT}
现在为 dev、staging 和 prod 环境使用不同的 .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
现在,使用为不同环境传递的配置文件参数运行应用程序:
-Dspring.profiles.active=dev