Я новичок в CDI. Я не могу понять, как преобразовать следующий код с помощью CDI.Передача параметра bean с использованием 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;
}
}
Я использовал Квалификационные, чтобы избежать двусмысленностей, но могу понять, как передать параметры из client.Do мне нужно использовать производитель, чтобы ввести список и строку в классе 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 {
}
Но как класс B получит список? Произведения просто вернут новый B(). –
Paneri
Я обновил свой ответ кодом, который позволяет вам получить доступ к списку событий. –