99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Micronaut 使用@EachBean 驅(qū)動(dòng)配置

2023-03-01 16:20 更新

@EachProperty 注釋是驅(qū)動(dòng)動(dòng)態(tài)配置的好方法,但通常您希望將該配置注入到依賴它的另一個(gè) bean 中。使用硬編碼限定符注入單個(gè)實(shí)例不是一個(gè)很好的解決方案,因此 @EachProperty 通常與 @EachBean 結(jié)合使用:

使用@EachBean

 Java Groovy  Kotlin 
@Factory // (1)
public class DataSourceFactory {

    @EachBean(DataSourceConfiguration.class) // (2)
    DataSource dataSource(DataSourceConfiguration configuration) { // (3)
        URI url = configuration.getUrl();
        return new DataSource(url);
    }
@Factory // (1)
class DataSourceFactory {

    @EachBean(DataSourceConfiguration) // (2)
    DataSource dataSource(DataSourceConfiguration configuration) { // (3)
        URI url = configuration.url
        return new DataSource(url)
    }
@Factory // (1)
class DataSourceFactory {

    @EachBean(DataSourceConfiguration::class) // (2)
    internal fun dataSource(configuration: DataSourceConfiguration): DataSource { // (3)
        val url = configuration.url
        return DataSource(url)
    }
  1. 上面的示例定義了一個(gè)創(chuàng)建 javax.sql.DataSource 實(shí)例的 bean Factory。

  2. @EachBean 注釋表示將為上一節(jié)中定義的每個(gè) DataSourceConfiguration 創(chuàng)建一個(gè)新的 DataSource bean。

  3. DataSourceConfiguration 實(shí)例作為方法參數(shù)注入并用于驅(qū)動(dòng)每個(gè) javax.sql.DataSource 的配置

請注意,@EachBean 要求父 bean 具有 @Named 限定符,因?yàn)樵撓薅ǚ?nbsp;@EachBean 創(chuàng)建的每個(gè) bean 繼承。

換句話說,要檢索由 test.datasource.one 創(chuàng)建的數(shù)據(jù)源,您可以執(zhí)行以下操作:

使用限定符

 Java Groovy  Kotlin 
Collection<DataSource> beansOfType = applicationContext.getBeansOfType(DataSource.class);
assertEquals(2, beansOfType.size()); // (1)

DataSource firstConfig = applicationContext.getBean(
        DataSource.class,
        Qualifiers.byName("one") // (2)
);
when:
Collection<DataSource> beansOfType = applicationContext.getBeansOfType(DataSource)
assertEquals(2, beansOfType.size()) // (1)

DataSource firstConfig = applicationContext.getBean(
        DataSource,
        Qualifiers.byName("one") // (2)
)
val beansOfType = applicationContext.getBeansOfType(DataSource::class.java)
assertEquals(2, beansOfType.size) // (1)

val firstConfig = applicationContext.getBean(
        DataSource::class.java,
        Qualifiers.byName("one") // (2)
)
  1. 我們在這里證明確實(shí)有兩個(gè)數(shù)據(jù)源。我們怎樣才能得到一個(gè)特別的?

  2. 通過使用 Qualifiers.byName("one"),我們可以選擇我們想要引用的兩個(gè) bean 中的哪一個(gè)。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號