1. default 和 active 的区别
1 2 3
| spring: profiles: default: dev
|
它的含义是:
只有当没有指定 spring.profiles.active 时,才使用 dev
情况一:什么都不指定
1
| ./valuation-engine-runtime
|
最终:
情况二:指定 test
1 2
| ./valuation-engine-runtime \ --spring.profiles.active=test
|
或者
1 2
| SPRING_PROFILES_ACTIVE=test \ ./valuation-engine-runtime
|
最终:
不会再有 dev。
情况三:指定多个
1 2
| ./valuation-engine-runtime \ --spring.profiles.active=test,pro
|
最终:
1
| Active Profiles = test, pro
|
2. 为什么不要用 active: dev
1 2 3
| spring: profiles: active: dev
|
然后启动:
1
| -Dspring.profiles.active=test
|
你的日志变成了:
1 2 3 4
| The following 2 profiles are active:
test dev
|
这正是你遇到的问题。
对于需要在不同环境切换(尤其是 Native + ConfigData)的应用,**不建议在 application.yaml 中固定写 active**。
3. 推荐配置
你的 application.yaml 建议改成:
1 2 3 4 5 6
| spring: application: name: valuation-engine
profiles: default: dev
|
- 本地开发直接运行,不指定 Profile,会自动使用
dev。
- 测试环境:
1
| SPRING_PROFILES_ACTIVE=test ./valuation-engine-runtime
|
1
| SPRING_PROFILES_ACTIVE=pro ./valuation-engine-runtime
|
都不会把 dev 一起激活。
4. Native 环境推荐使用环境变量
对于 GraalVM Native,我建议优先使用环境变量,而不是 -D:
1 2 3 4 5 6 7 8 9 10 11 12
| export SPRING_PROFILES_ACTIVE=test export SERVER_PORT=9090 ./valuation-engine-runtime
or
SPRING_PROFILES_ACTIVE=test \ SERVER_PORT=9090 \ ./valuation-engine-runtime
or ./valuation-engine-runtime -Dspring.profiles.active=test -Dserver.port=9090
|