我是 CDI 的新手。我不知道如何使用 CDI 转换以下代码。
Class Client {
void method(){
List<Events> events = getEvents();
I b = new B(events);
I c = new C("Hello");
}
List<Events> getEvents(){
//Do Something
return events;
}
}
Class B implements I{
List<Events> events ;
B(List<Events> events){
this.events = events;
}
}
Class C implements I{
String s;
C(String s){
this.s = s;
}
}
我使用限定符来避免歧义,但可以弄清楚如何从客户端传递参数。我需要使用生产者将列表和字符串分别注入 B 类和 C 类吗?
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
public @interface Ii {
Type value() ;
public enum Type {
B,
C
}
}
Class Client {
@Inject @Ii(Ii.type.B)
B b;
@Inject @Ii(Ii.type.C)
C b;
}
@Ii(Ii.type.B)
Class B {
}
@Ii(Ii.type.C)
Class C {
}