Ich habe ein Projekt erstellt , um die Abhängigkeitsinjektion von Google Guice in meinem Blog zu testen Jax-rs Ressourcen, mit Resteasy.
Meine Absichten sind:
Ich habe zwei Klassen erstellt, die mit %code% : %code% und %code% kommentiert wurden. In beiden habe ich die gleichen Ressourcen-Klassen ( %code% und %code% ) nur für meinen Test hinzugefügt.
Mein Modul ist wie folgt konfiguriert:
%Vor%Wenn ich %code% oder %code% aufruft, erhalte ich denselben Fehler:
%Vor%Nun, wie ich erwartet habe, funktioniert das nicht. Der Google Guice ist nicht "schlau", um die Ressourcenklassen mit dem Konstruktor für mich zu instanziieren.
Aber ich kann keinen Weg zur Arbeit finden. Um wirklich ehrlich zu sein, bin ich wirklich verwirrt darüber, wie Google Guice, Jetty und Resteasy in diesem Szenario miteinander spielen.
Wenn ich die Verwendung von %code% ablehne, arbeiten meine Ressourcen mit Google Guice und konfigurieren meine %code% wie folgt:
%Vor%Aber in diesem Fall übergebe ich das Steuerelement, um meine Ressourcen ( %code% und %code% ) an Guice zu registrieren. Es ist nicht flexibel für mich, ich kann meine multiple %code% nicht einrichten.
Also, was ich vermisse oder nicht verstehe?
Ich habe ein Projekt mit dem problematischen Code erstellt. Ist sehr einfach einzurichten und zu testen: Ссылка
Danke!
Wenn Sie die Methode %code% in Ihrer Anwendung verwenden, versucht sie, eine Instanz für alle registrierten Ressourcen zu erstellen, indem sie den Standardkonstruktor verwendet, der in unserer Ressourcenklasse fehlt. Eine Möglichkeit besteht darin, einen Standardkonstruktor zu erstellen und die Abhängigkeiten über Setter Injection zu injizieren. Und anstatt %code% in %code% und %code% zu überschreiben, überschreiben Sie %code% . Da Ressourcen Singleton sein können.
Im Folgenden sind die Änderungen aufgeführt, die ich vorgenommen habe, damit es so funktioniert, wie Sie es möchten.
%Vor%AnwendungV1RS.java
%Vor%AnwendungV2RS.java
%Vor%HalloResource.java
%Vor%UserResource.java
Fügen Sie %code% zu Ihren Serviceklassen hinzu.
Ich hoffe, es hilft.
Ich habe den Code auch auf repo gejagt . schau es dir an