2016-08-24 1 views
0

Je ne suis pas sûr s'il y a quelque chose de vraiment basique qui me manque, mais je n'arrive pas à comprendre comment utiliser WSClient. J'ai vu tous les exemples disant que vous devez passer le WSClient à une classe en tant que dépendance, ce que j'ai fait, mais quand je lance le programme, qu'est-ce que je passe réellement à ma classe?Utiliser WSClient dans l'application scala (framework de jeu)

Par exemple, ma signature de classe est:

class myClassName(ws: WSClient) 

Mais que quand j'instancier la classe dois-je passer en fait-il? Je suis également heureux d'ignorer le jeu! Si cela rend la tâche plus facile, il suffit d'utiliser SBT pour l'exécuter (ce que je connais mieux).

Répondre

2

Il est difficile de savoir vous utilisez peut-être un WSClient, mais il est recommandé de laisser le cadre de jeu «gérer» l'instance du client. Lorsque vous instanciez votre application, il est injecté:

class Application @Inject() (ws: WSClient) extends Controller { 
    ... 
} 

Cela signifie qu'à l'intérieur du ... vous avez accès à ws en tant que valeur. Vous pouvez instancier myClassName utiliser:

class Application @Inject() (ws: WSClient) extends Controller { 
    val myclass = myClassName(ws) // passes the injected WSClient to myClassName 
} 

Ou vous pouvez écrire une fonction qui renvoie le WSClient, donc une autre partie de votre code peut appeler dans votre Application objet pour obtenir un gestionnaire d'objets pour elle.

Mais la clé est que l'objet Application obtient ce handle à cause de injection, qui est l'annotation @Inject.

Si vous devez générer un WSClient et le gérer manuellement, il existe good instructions here. L'implémentation recommandée dépend de Play! bibliothèques de framework, mais ne dépend pas du Application.

+0

Comment exécuteriez-vous ensuite cette application? J'utilise Intellij – annedroiid

+0

Comme dans mon but est d'avoir quelque chose où je peux juste cliquer sur Exécuter et exécuter le tout en utilisant Intellij, je n'ai pas besoin de toutes les choses de l'application. Ceci est juste une classe secondaire à l'application principale. – annedroiid

+0

Utilisez-vous SBT pour compiler et exécuter votre application? SBT a un plugin pour IntelliJ qui peut être utilisé pour démarrer des applications. Je ne peux pas vous donner beaucoup de conseils sans en savoir beaucoup plus. –