fmgasparino / google-gin

Automatically exported from code.google.com/p/google-gin
Apache License 2.0
0 stars 0 forks source link

Adding (limited) method-injection support #6

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
For some situations, in particular when the construction of an object is
not under Gin/developer control, constructor injection is not sufficient. 
An example for this issue are GWT entry points - the Ginjector
implementations would shrink by a good margin if one had to only define the
GWT entry points in here.

The attached patch adds method injection to Gin, providing a way to inject
members in objects even after they have been created.  It closely follows
the Guice pattern for similar cases:

--- Example ---

public class MyInjector {
  ...
  injectMembers(MyEntryPoint entryPoint);
}

public class MyEntryPoint {
  private MyService service;

  public void onModuleLoad() {
    MyInjector injector = GWT.create(MyInjector.class);
    injector.injectMembers(this);
    ...
  }

  @Inject
  public void injectHere(MyService service) [
    this.service = service;
  }
}

--- /Example ---

The patch can be found at http://codereview.appspot.com/5863.

Original issue reported on code.google.com by aragos on 15 Sep 2008 at 2:31

GoogleCodeExporter commented 9 years ago
I am not sure this is really needed. (This will be my initial feedback on 
nearly any
feature addition to GIN. I am trying to keep things as simple as possible. :))

The alternative is to make your EntryPoint pretty trivial and to have it create 
your
Ginjector and then create MyEntryPointImpl or whatever you like. 
MyEntryPointImpl can
then be created via GIN's normal goodness.

OTOH, Guice supports method injection so we probably will end up doing so 
eventually.

I see this patch doing two things:
1) Allowing method injection in addition to constructor injection
2) Allowing a Ginjector interface to let you request injection on a pre-created 
object

Might it be clearer to do these in two phases? Once the current big pending 
change
(GinModule) is landed I'll try to follow up better on this patch.

Original comment by bstoler+code@google.com on 22 Sep 2008 at 8:49

GoogleCodeExporter commented 9 years ago
Patch accepted from aragos and committed in r53. Code review:
http://codereview.appspot.com/5863

Original comment by bstoler+code@google.com on 27 Oct 2008 at 12:20