2017-07-26 2 views
0

Je migre mon application de Jersey2/HK2 vers Dropwizard. J'utilise dropwizard-guicey pour intégrer Guice dans mon application tout en conservant certaines de mes liaisons/fonctionnalités HK2. Dropwizard-guicey lie par défaut toutes les ressources de la portée de singleton, ce qui me laisse à penser - quelle est la méthode suggérée pour lier les sous-ressources dans cette situation? À Jersey, je peux faire quelque chose d'aussi simple queDropwizard: localisateurs de sous-ressources dropwizard-guicey

@Path("{pathParamId}/sub-resource") 
public Class<MySubResource> mySubResource() { 
    return MySubResource.class; 
} 

Mais ma classe de sous-ressource ressemble alors à ce

public class MySubResource { 
    private String id; 

    public MySubResource(@PathParam("pathParamId") id) { 
     this.id = id; 
    } 
} 

Il ne semble pas que Dropwizard est en mesure de ramasser sur les dépendances qui Guice se liant dans MySubResource, puisque les ressources sont toutes gérées par Jersey. Ce que je recherche en fin de compte, ce sont les liaisons par requête que Jersey donne par défaut pour les ressources et Guice pour faire l'injection sous ce niveau.

Répondre

1

Dans votre exemple, la ressource racine sera gérée par guice (installée par resource installer) et la sous-ressource sera créée par HK (par requête).

Pour utiliser les services de Guice dans des ressources sous, vous devez activer hk guice bridge:

  • Ajouter org.glassfish.hk2:guice-bridge:2.5.0-b32 dépendance
  • permettent l'option pont avec .option(GuiceyOptions.UseHkBridge, true).

J'ajoute complete demo au rapport de prélèvement. Il montre également comment votre cas pourrait être implémenté avec un guice pur.