YAML文件Spring Boot中的多个属性

时间:2017-03-24 23:09:33

标签: java spring spring-boot configuration yaml

spring: 
   profiles: dev
spring.datasource: 
        driver-class-name: 
        password: ~
        url: ~
        username: ~
--- 
secdb: 
  profiles: dev
spring.datasource: 
       driver-class-name: ~
       password: ~
       url: ~
       username: ~
---

我在application.yml文件中声明了以上两个属性,但是当我在实现类中使用它时,如下所示。

@Value("${spring.datasource.url}")
private String URL;

它可以工作并从YML文件中获取网址。 但是当我这样做时

@Value("${secdb.spring.datasource.url}")
private String URL;

它在春季启动时开始说

Could not resolve placeholder 'secdb.spring.datasource.url' in value...

因为,我处于初级水平。 YML可能是错误的,但我的意图是在YML文件中有两个数据源,第二个用于一个JDBC连接,另一个是默认连接。请指导我完成错误

1 个答案:

答案 0 :(得分:2)

您在yaml文件中犯了两个错误。

  1. 请勿在{{1​​}}之前使用空格。
  2. 在您的第一个---之前,有一个空格。它表示spring.datasource:spring.datasource:
  3. 的子属性
  4. spring:绝对不是正确的方法。即使您有效@Value("${secdb.spring.datasource.url}"),您也需要获得secdb
  5. 之类的值
  6. 我不建议您使用像@Value("${spring.datasource.url}")这样的Spring配置文件。这不是一种熟悉的方式。您可以像secdb: profiles: dev一样使用它,并像spring: profiles: secdb一样激活它。或者,如果您坚持以这种方式使用它,则需要像spring.profiles.active=secdb一样激活它。
  7. 毕竟,如果你想使用Spring配置文件属性,你需要像它一样激活它 spring.profiles.active=secdb 要么 在application.properties中添加$ java -jar -Dspring.profiles.active=production

    我建议您详细阅读this document

    如果有帮助,我会很高兴的。