6.3.1 定义特定 profile 的属性
定义特定 profile 文件的属性的一种方法是创建另一个仅包含用于生产的属性的 YAML 或属性文件。文件的名称应该遵循这个约定:application-{profile 名称}.yml 或 application-{profile 名称}.properties。然后可以指定适合该配置文件的配置属性。例如,可以创建一个名为 application-prod.yml 的新文件,包含以下属性:
spring:
datasource:
url: jdbc:mysql://localhost/tacocloud
username: tacouser
password: tacopassword
logging:
level:
tacos: WARN
另一种指定特定 profile 文件的属性的方法只适用于 YAML 配置。它涉及在应用程序中将特定 profile 的属性与非 profile 的属性一起放在 application.yml 中,由三个连字符分隔。将生产属性应用于 application.yml 时,整个 application.yml 应该是这样的:
logging:
level:
tacos: DEBUG
---
spring:
profiles: prod
datasource:
url: jdbc:mysql://localhost/tacocloud
username: tacouser
password: tacopassword
logging:
level:
tacos: WARN
这个 application.yml 文件由一组三重连字符(---)分成两个部分。第二部分为 spring.profiles 指定一个值,这个值指示了随后应用于 prod 配置文件的属性。另一方面,第一部分没有为 spring.profiles 指定值。因此,它的属性对于所有 profile 文件都是通用的,或者如果指定的 profile 文件没有设置其他属性,它就是默认的。
无论应用程序运行时哪个配置文件处于活动状态,tacos 包的日志级别都将通过默认配置文件中的属性设置为 DEBUG。但是,如果名为 prod 的配置文件是活动的,那么 logging.level.tacos 属性将会被重写为 WARN。同样,如果 prod 配置文件是活动的,那么数据源属性将设置为使用外部 MySQL 数据库。
通过创建使用 application-{profile 名称}.yml 或 application-{profile 名称}.properties 这种模式命名的其他 YAML 或 properties 文件,可以为任意数量的 profile 文件定义属性。或者在 application.yml 中再输入三个破折号通过 spring.profiles 来指定配置文件名称。然后添加需要的所有特定 profile 文件的属性。