hatte ich dieses Problem in der folgenden Situation, so dass ich dachte, dass ich hier meine Lösung veröffentlichen würde, auch:
BusinessLogic
erfordert zwei Konstruktorargumente: MyDao
, die ich theoretisch von guice, und ein anderes Objekt bekommen könnte dass ich nicht von guice bekommen konnte.
Also habe ich eine BusinessLogicProvider
(extends AbstactProvider
) erstellt, aber es ist nicht mit bind(BusinessLogic.class).toProvider(BusinessLogicProvider)
verwendet). Jetzt binde ich nur die BusinessLogicProvider
wie jeder guice-served Typ: bind(BusinessLogicProvider.class);
Inside my BusinessLogicProvider
Klasse kann ich jetzt @Inject
auf ein private Provider<MyDao> daoProvider;
Später verwenden, in den BusinessLogicProvider
‚s public BusinessLogic get()
Methode, kann ich dann BusinessLogic
nennen 's Konstruktor mit den beiden erforderlichen Argumenten: daoProvider.get()
und das andere Objekt kann ich nicht von Guice bekommen.
Die Pitfall: wenn die @Inject
private Provider<MyDao> daoProvider;
meiner BusinessLogicProvider
ed nicht vom Typ ist Provider<MyDao>
(aber simpy vom Typ MyDao
), wird es nicht funktionieren.
Auch wenn die @Inject
ed MyDao
aus Guice gekommen sind, muss Guice ein neues jedes Mal erstellen Sie BusinessLogic
instanziieren.
"Weder das Objekt noch die Methode wird als endgültig markiert" Sollte das nicht "Weder die * Klasse * noch die Methode ist final" sein? –
Yup, Versprecher. Fest. –