2017-09-08 74 views
0

我目前在我的application.yaml文件的String属性条件下创建dataSource bean时遇到问题。SpEL @ConditionalOnProperty字符串属性empty或nulll

理想情况下,我只想在我的application.yaml文件中设置url时才创建dataSource bean。如果bean不存在(空或空),则不应创建该bean。我知道这个条件检查布尔值,但无论如何检查字符串属性是否为空或空?

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 
+0

'@ ConditionalOnProperty'已经有一个'matchIfMissing'参数来控制属性不存在时发生的情况。您是否试图说空字符串值是代码中不存在的同义词? –

回答

1

你可以尝试更多的通用目的的注释是为Spring核心标准: org.springframework.context.annotation.Conditional

在上下文对象为你的回调,你可以得到你所需要的所有信息:org.springframework.context.annotation.Condition

您也可以考虑使用配置文件。

相关问题