Injecter avec Gin dans l'instance créée par GWT.create
Question
J'ai un classeur différé personnalisé (implémentation de rebind) qui instancie les objets.Je voudrais avoir des dépendances (méthodes de définition annotées @Inject) dans l'instance retournée par GWT.create () remplies par GIN.Est-ce possible?
Donc, un code donné tel que:
Foo foo = GWT.create(Foo.class);
si l'implémentation finale de foo a:
@Inject
public void setBar(Bar bar) {
...
}
Comment puis-je faire injecter automatiquement la barre dans l'instance foo retournée par GIN?
La solution
Votre Ginjector peut avoir des méthodes ajoutées dans le but d'injecter des objets créés d'une autre manière.Ceux-ci doivent prendre un argument et doivent spécifier le type le plus spécifique possible.Par exemple, si MyViewImpl étend BaseView et que les deux types ont des dépendances à injecter, mais que vous déclarez
void injectBaseView(BaseView view);
dans votre ginjector, seuls les champs / setters déclarés sur BaseView seront traités.
EDIT: De plus, si aucune liaison n'est déclarée, GWT.create sera utilisé pour créer une instance, afin que vous puissiez avoir votre gâteau et le manger.Pour autant que je me souvienne, une exception à cela est lorsque vous voulez GWT.create un type, mais renvoyer un autre (voir les interfaces RPC pour un exemple).