2017-09-08 79 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

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

相關問題