2016-09-22 62 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