Iniettando con gin in istanza creata da gwt.create
Domanda
Ho un legante differito personalizzato (implementazione del rimpasto) che istanzia gli oggetti. Vorrei avere alcune dipendenze (metodi di setter annotati @Inject) all'interno dell'istanza restituita da GWT.Create () soddisfatta da Gin. È possibile?
Quindi, dato codice come:
Foo foo = GWT.create(Foo.class);
Se l'implementazione finale di Foo ha:
@Inject
public void setBar(Bar bar) {
...
}
Come posso essere iniettato bar nell'istanza Foo restituita automaticamente da Gin?
Soluzione
Il tuo ginjettore può avere metodi aggiunti ad esso allo scopo di iniettare oggetti creati in qualche altro modo. Questi devono prendere un argomento e dovrebbero specificare il tipo più specifico possibile. Ad esempio, se MyViewImpl estende BaseView ed entrambi i tipi hanno dipendenze da iniettare, ma si dichiara
void injectBaseView(BaseView view);
Nel tuo ginjettore, verranno trattati solo i campi/setter dichiarati su BaseView.
EDIT: Inoltre, se non viene dichiarato alcun legame, GWT.Create verrà utilizzato per creare un'istanza, in modo da poter avere la tua torta e mangiarla. Un'eccezione a quella per quanto posso ricordare, è quando si desidera GWT.Crea un tipo, ma restituisci un altro (vedi interfacce RPC per un esempio).