2016-09-22 69 views
0

我正在努力解決以下問題:SpringBoot得到@Configuration的環境變量

在我的springboot項目中,我想自己初始化一個數據源。在該方法中,我想使用從YML文件中讀取的一些環境變量。

@Configuration 
public class DataSourceConfig { 
    @Bean 
    public JdbcDataSource createMainDataSource() { 
     // init datasource and read some environment variables 
    } 
} 

Application.yml:

spring: 
    datasource: 
    url: jdbc:mysql://localhost:3306/XXX 
    driverClassName: com.mysql.jdbc.Driver 

然後我定義的另一個類@Configuration在那裏我得到的環境變量。

@Configuration 
@ConfigurationProperties(prefix="spring.datasource") 
public class PropertiesConfig { 

    private String url; 

    private String driverClassName; 
} 

但現在我有PropertiesConfig導致我無法使用環境變量的問題,前級DataSourceConfig被初始化的問題。

有人能幫我嗎?

+1

爲什麼?此外,這些屬性已經綁定到一個對象,所以爲什麼再次綁定到另一個對象? –

+0

他們綁定了哪些對象?那麼我怎樣才能訪問它們呢? – Patrick

+0

'DataSourceProperties' ...只是auatowire它。但你爲什麼需要它?有更簡單的方法來構建你自己的數據源(如果你真的需要的話)。但仍然爲什麼你需要構建自己的? –

回答

2

要創建數據源您需要PropertiesConfig,所以只是把它注射到你的bean:

@Configuration 
public class DataSourceConfig { 

    @Autowired 
    private PropertiesConfig propertiesConfig; 

    @Bean 
    public JdbcDataSource createMainDataSource() { 
     // init datasource and read some environment variables 
    } 
} 
+0

真棒。謝謝! – Patrick