[英]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.