2010-11-18 8 views
2

J'ai une méthode annotée avec @Provides dans ma configuration de Guice, mais cela ne fonctionne pas.La méthode Guice @Provides ne fonctionne pas

public class GuiceConfig extends GuiceServletContextListener { 

    ... 

    @Provides @RequestScoped 
    EntityManager provideEntityManger() { 
    return entityManagerFactory.createEntityManager(); 
    } 

} 

Quand je lance mon application je reçois l'erreur suivante:

com.google.inject.CreationException: Guice creation errors:<|<|1) No implementation for javax.persistence.EntityManager was bound.<| while locating javax.persistence.EntityManager<|
for parameter 0 at com.someclass.of.myproject

+2

Je peux me tromper, mais cela ressemble à un problème lié à la portée. Êtes-vous sûr que la portée est correcte? Lorsque votre webapp démarre, elle ne sera pas dans RequestScope. – gpampara

Répondre

4

Le principal problème est que vous utilisez ici @Provides correctement. Une méthode @Provides doit être dans l'un des Module que vous utilisez lors de l'initialisation de Guice ... vous ne pouvez pas le mettre dans le GuiceServletContextListener.

Questions connexes