【发布时间】:2018-02-17 12:23:16
【问题描述】:
我目前在使用我的 applications.yaml 文件中的 String 属性创建数据源 bean 时遇到问题。
理想情况下,我只想在我的 application.yaml 文件中设置 url 时创建 dataSource bean。如果 bean 不存在(空或 null),则不应创建它。我知道这个条件会检查布尔值,但无论如何要检查字符串属性是空还是空?
DatabaseConfig.java
@Configuration
public class DatabaseConfig {
@Value("${database.url:}")
private String databaseUrl;
@Value("${database.username:}")
private String databaseUsername;
@Value("${database.password:}")
private String databasePassword;
protected static final String DRIVER_CLASS_NAME = "com.sybase.jdbc4.jdbc.SybDriver";
/**
* Configures and returns a datasource. Optional
*
* @return A datasource.
*/
@ConditionalOnProperty(value = "database.url")
@Bean
public DataSource dataSource() {
return DataSourceBuilder.create()
.url(testDatabaseUrl)
.username(testDatabaseUsername)
.password(testDatabasePassword)
.build();
}
}
application.yml(该字段是可选的)
database:
url: http://localhost:9000
【问题讨论】:
-
@ConditionalOnProperty已经有一个matchIfMissing参数来控制当属性不存在时会发生什么。您是想说空字符串值是代码中不存在的同义词吗?
标签: java spring spring-boot datasource spring-el