2017-02-28 93 views
0

在科特林功能參數與@Qualifier工作總是防止@Qualifier()從參數級被使用的值。在科特林功能

如果有人想在同一個應用程序是什麼組織這次推薦的方法中頻繁訪問不同數據庫中配置類來創建多個DataSource S'

做這似乎相當普遍在Java中是不允許在科特林以下。

@Configuration 
class DatabaseAdminConfig { 

    @Bean 
    @ConfigurationProperties(prefix = "spring.ds_admin") 
    fun adminDataSource(): DataSource { 
     return DataSourceBuilder.create().build() 
    } 

    @Bean 
    fun adminJdbcTemplate(@Qualifier("adminDataSource") dsAdminDb: DataSource): JdbcTemplate { 
     return JdbcTemplate(dsAdminDb) 
    } 

    @ConfigurationProperties(prefix = "spring.ds_widget") 
    fun widgetDataSource(): DataSource { 
     return DataSourceBuilder.create().build() 
    } 

    @Bean 
    fun widgetJdbcTemplate(@Qualifier("widgetDataSource") widgetDataSource: DataSource): JdbcTemplate { 
     return JdbcTemplate(widgetDataSource) 
    } 
} 

回答

2

沒有必要將依賴項從同一個類中注入Spring中需要該依賴項的方法中。您可以直接調用該方法。如下所示:函數表達式體(如上所述)使Spring Configuration類看起來更簡潔。

PPS:@Qualifier作品完全對我很好。我只是測試它。

PPPS:爲了完整解決特定問題,正如我所評論的那樣:您必須意外導入了javax.inject.Qualifier註釋,這是行不通的。您需要導入哪些工作

+0

感謝org.springframework.beans.factory.annotation.Qualifier!是的,這裏的例子就是我可以想出的最簡單的非特定人爲的例子,以顯示我遇到的問題。我試圖在參數中使用@Qualifier的錯誤是「此註釋不適用於目標'值參數'」。 – sclarson

+1

您必須小心進口'javax.inject.Qualifier'註釋,這是行不通的。您需要導入'org.springframework.beans.factory.annotation.Qualifier'註釋。 – Strelok