java - Spring Boot YAML 文件中的多个属性

标签 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 文件中获取 url。 但是当我这样做时

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

它在 Spring 启动时失败,开始说

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

因为,我处于初级水平。 YML 可能是错误的,但我的目的是在 YML 文件中有两个数据源,并将第二个数据源用于一个 JDBC 连接,其他一个是默认的。请指导我解决错误

最佳答案

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

  1. --- 之前不要使用空格.
  2. 在你的第一个spring.datasource:之前,有一个空格。它表示spring.datasource:spring: 的子属性.
  3. @Value("${secdb.spring.datasource.url}")绝对不是正确的方法。即使你活跃secdb ,您还需要获取类似 @Value("${spring.datasource.url}") 的值.
  4. 我不建议您使用 Spring 配置文件,如 secdb: profiles: dev 。这不是一种熟悉的方式。您可以像spring: profiles: secdb一样使用它并像spring.profiles.active=secdb一样激活它。或者,如果您坚持以这种方式使用它,则需要像 spring.profiles.active=secdb 一样激活它。 .

毕竟,如果你想使用Spring配置文件属性,你需要激活它,就像 $ java -jar -Dspring.profiles.active=production 或者 添加spring.profiles.active=production在 application.properties 中。

我建议您阅读this document详细。

如果有帮助我会很高兴。

关于java - Spring Boot YAML 文件中的多个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43010559/

相关文章:

java - Java 的 Docker 插件问题 (fabric8io)

java - Spring Request映射期

spring-boot - 在Gradle 5.x中无法使用bootRun addresources = true

java - 使用 Drools fluent API 即时更改规则的示例

java - 如何通过在 Java 中单击 JPanel 来 move 未修饰的 JFrame?

java - 关于将 com 端口字符串转换为整数数组

java - 为什么我的 PathResource 不可读?

spring-boot - 寻找 retryWhen 的替代方案,现在已弃用

spring-boot - 扫描表达式不支持排序,DynamoDBPagingAndSortingRepository 的 GSI 没有 HASH 键

Java - 通过添加新类而不修改任何其他内容来添加功能