J'utilise Play 2.5 avec l'injection de dépendance de Guice.Comment lier la classe avec Google Guice en utilisant un FQDN Chaîne
bind normal fonctionne comme:
bind(classOf[SomeClass]).to(classOf[DefaultClass])
maintenant je dois seulement être en mesure de lier une classe où le nom de classe a été spécifié dans la configuration.
J'ai essayé quelque chose comme:
val className = config.getString("someClass.className")
val x: Class[_] = Class.forName(className)
bind(classOf[SomeClass]).to(classOf[x])
Mais les types sont mauvais.
Il doit être fait par Guice, puisque le SomeClass
a un argument qui doit être injecté, sinon je l'aurais utilisé quelque chose comme
val className = config.getString("someClass.className")
val x = Class.forName(className).newInstance().asInstanceOf[SomeClass]
bind(classOf[SomeClass]).toInstance(x)
Est-ce que quelqu'un a une idée sur la façon de lier via Guice ?
Tu ne peux pas jeter être le bon type générique? Je ne sais pas Scala, mais en Java 'Class clazz = (Classe ) Class.forName (className); bind (SomeClass.class) .to (clazz); ' –