Langue: Scala; Cadre: Lecture 2,5; Bibliothèques: Silhouette 4.0, Guice, scala-guice.Lecture 2.5 Silhouette 4 - DI avec guice
L'un des projets de graine de Silhouette officiels utilise guice et scala-guice (net.codingwell.scalaguice.ScalaModule) pour écrire la configuration DI. Code ressemble à ceci:
import net.codingwell.scalaguice.ScalaModule
class Module extends AbstractModule with ScalaModule{
/**
* Configures the module.
*/
def configure() {
bind[Silhouette[MyEnv]].to[SilhouetteProvider[MyEnv]]
bind[SecuredErrorHandler].to[ErrorHandler]
bind[UnsecuredErrorHandler].to[ErrorHandler]
bind[IdentityService[User]].to[UserService]
Je me demande, comment ce code ressemblerait sans la magie de la bibliothèque net.codingwell.scalaguice. Est-ce que quelqu'un pourrait réécrire ces liaisons en utilisant seulement le guice original?
en plus j'ai aussi ce code:
@Provides
def provideEnvironment(
userService: UserService,
authenticatorService: AuthenticatorService[CookieAuthenticator],
eventBus: EventBus
): Environment[MyEnv] = {
Environment[MyEnv](
userService,
authenticatorService,
Seq(),
eventBus
)
}
Merci à l'avance.
Merci pour la réponse, mais J'ai déjà essayé, et pour une raison quelconque, cela ne fonctionne pas. Je peux comprendre pourquoi. Si j'écris ceci: bind (classOf [Silhouette [DefaultEnv]]) .to (classOf [SilhouetteProvider [DefaultEnv]]) au lieu de ceci: bind [Silhouette [MyEnv]] .à [SilhouetteProvider [MyEnv]], je reçois erreur de compilation: –
CreationException: Impossible de créer l'injecteur, voir les erreurs suivantes: 1) com.mohiva.play.silhouette.api.Environment ne peut pas être utilisé comme clé; Ce n'est pas entièrement spécifié. à com.mohiva.play.silhouette.api.SilhouetteProvider. (Silhouette.scala: 103) at identity.Module.configure (Module.scala: 47) (via les modules: com.google.inject.util.Modules $ OverrideModule -> identity.Module) –
Impossible de lier les types génériques comme ça. Il ressemble plus à ceci: bind (nouveau TypeLiteral [Silhouette [DefaultEnv]] {}). To (classOf [SilhouetteProvider [DefaultEnv]]]) –