24.6.3. Multi-profile YAML文档

你可以在单个文件中定义多个特定配置(profile-specific)的YAML文档,并通过spring.profiles标示生效的文档,例如:

  1. server:
  2. address: 192.168.1.100
  3. ---
  4. spring:
  5. profiles: development
  6. server:
  7. address: 127.0.0.1
  8. ---
  9. spring:
  10. profiles: production
  11. server:
  12. address: 192.168.1.120

在以上例子中,如果development profile被激活,server.address属性将是127.0.0.1;如果developmentproduction profiles没有启用,则该属性的值将是192.168.1.100

在应用上下文启动时,如果没有明确指定激活的profiles,则默认的profiles将生效。所以,在下面的文档中我们为security.user.password设置了一个值,该值只在”default” profile中有效:

  1. server:
  2. port: 8000
  3. ---
  4. spring:
  5. profiles: default
  6. security:
  7. user:
  8. password: weak

然而,在这个示例中,由于没有关联任何profile,密码总是会设置,并且如果有必要的话可以在其他profiles中显式重置:

  1. server:
  2. port: 8000
  3. security:
  4. user:
  5. password: weak

通过!可以对spring.profiles指定的profiles进行取反(negated,跟java中的!作用一样),如果negated和non-negated profiles都指定一个单一文件,至少需要匹配一个non-negated profile,可能不会匹配任何negated profiles。