簡體   English   中英

將枚舉成員發布為 spring bean

[英]Publish enum members as spring beans

假設我有一個預先存在的枚舉。

enum Foo {
  FOO1,
  FOO2,
  ...
}

我現在想將所有成員發布為 spring bean。 我可以:

@Bean("FOO1")
public Foo foo1(){
   return Foo.FOO1;
}


@Bean("FOO2")
public Foo foo2(){
   return Foo.FOO2;
}

...

等等。 有沒有辦法一次發布所有枚舉成員?

評論者問我為什么要這樣做:

還有另一個組件BarService

 @Autowired
 List<Bar> allTheBars;

它已經收集了大量的酒吧。

我也需要讓枚舉Foo的所有成員都對BarService可用。 讓他們實現Bar並將它們變成 bean 是最簡單的。 或者,我可以在BarService中手動添加它們,但這需要我更改BarService

在單個 JVM 實例中,每個枚舉值始終只有一個實例。 您可以在代碼中任何需要的地方使用Foo.FOO1 ,而無需將其作為 bean 注入。

您可以在以下配置之一中定義您的Enum

@Bean(name="EnumBeans")
    Foo[] enums() {
        return Foo.values();
}

現在,這將在您訪問它們后立即為您提供所有值/成員:

    @Autowired
    @Qualifier(value="EnumBeans")
    Foo[] enums;
    ..
    public void accessor(){
    for(Foo e:enums) {
    System.out.println(e);
    }
   }
 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM