2016-05-12 74 views
0

對於這個項目,我目前的工作,我想從YAML中加載嵌套值彈簧啓動應用程序,我已經在這裏和那裏嘗試不同的東西,但似乎沒有任何工作。閱讀嵌套屬性格式

聽到的是我的數據庫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

名稱是'spring.data.mongodb.host'不是'的MongoDB .host'。你爲什麼不讓Spring Boot爲你配置這些東西?它具有mongo的自動配置支持(這就是屬性存在的原因)。 –

+0

@ M.Deinum你能請添加您的評論作爲一個答案,我會接受它,我使用自動配置配置MongoDB的 –

回答

1

試試這個配置,讓春天啓動配置其餘的:Example

application.yml

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