在spring boot配置中从yaml读取嵌套的属性

时间:2016-05-12 23:07:21

标签: spring-mvc spring-boot yaml spring-data-mongodb

对于我目前正在进行的项目,我正在尝试将嵌套值从yaml加载到spring-boot应用程序我从这里和那里尝试了不同的东西,但似乎没有任何工作。

听到我的 database-server.yaml 的样子:

spring:
  application:
    name: database-service
  data:
    mongodb.host: <hostname>
    mongodb.port: 27017
    mongodb.uri: mongodb://<hostname>/<db>

我想访问mongodb.host和mongodb.port。

春季靴子的入口点如下:

@SpringBootApplication
@ComponentScan("abc.def.testrun")
public class DatabaseOperationServiceWebApp
{
   public static void main(String... args)
   {
      System.setProperty("spring.config.name", "database-server");
      SpringApplication.run(DatabaseOperationServiceWebApp.class, args);
   }
}

听到我是如何尝试检索价值的:我认为我在这里做错了,但不知道是什么,因为我在不同的教程上阅读不同的东西。所以,知道这里究竟需要做些什么。

    @Configuration
    @Component
    @EnableConfigurationProperties
    public class TestRunDatabaseOperationConfig extends AbstractMongoConfiguration
    {

       @Override
       protected String getDatabaseName()
       {
          return "db";
       }

       @Value("${mongodb.host}")
       private String host;
       @Value("${mongodb.port}")
       private String port;
       //more code
    }
你可以告诉我这里我做错了吗。

由于

1 个答案:

答案 0 :(得分:1)

尝试此配置,让Spring Boot配置其余部分:Example

<强> application.yml

spring:
    data:
        mongodb:
            host: <hostname>
            port: 27017
            database: <dbname>
            username: <usernamr>
            password: ******