Я использую hk2 как двигатель CDI. У меня есть 2 вложенные инъекции, как в коде ниже:HK2 InstantiationУслуги вложенные инъекции
public class Root {
@Inject
Son son;
...
}
public class Son {
@Inject
GrandSon gs; //should i put it here?
...
}
public class GrandSon {
...
}
Эти классы Factory:
public class SonFactory implements Factory<Son>{
@Inject
InstantionService is;
@Inject
GrandSon gs; //should i put it here?
public Son provide(){
is.getInstantiationData()
return sonImpl;
}
public dispose(Son instance){
// destroy
}
}
public GrandsonFactory implements Factory <GrandSon>{
@Inject
InstantionService is
public GrandSon provide(){
is.getInstantiationData()
return sonImple;
}
public dispose(GrandSon instance){
// destroy
}
}
я связан как завод, как: bindFactory (SonFactory.class) .то (Son. класс) .в (RequestScoped.class) bindFactory (GrandSonFactory.class) .то (GrandSon.class) .в (RequestScoped.class)
Теперь я хочу просто с помощью InstantionService.getInstantiationData() для получения данных дескриптора из c всеохватывающий родительский класс в классе GrandSon. В частности, мне нужно вернуться обратно до класса Root, проверяющего родителя-инъектора. Я могу получить данные с метода factory.provide класса Son, но я не могу получить действительный getInstantiationdata() из класса grandSon. Что я не так с кодом?
В вашем коде выше я не вижу, кто предоставляет FirstSon? Я вижу поставщиков Factory для Son и GrandSon, но не FirstSon. – jwells131313
Извините, что это первый сын ... я только что отредактировал – Alex
Возможно, возникла проблема с InstantiationService при получении Factory services. Я напишу единичный тест и узнаю – jwells131313