我目前在应用程序的yaml文件中使用String属性时,遇到了创建dataSource bean的问题。
理想情况下,我只想在应用程序的yaml文件中设置url时才创建dataSource bean。如果不存在(为空或null),则不应该创建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
参数,用于控制当属性不存在时会发生什么。您是否想说空字符串值在您的代码中是不存在的同义词? - Andy Brown