Hey guys,

So it's occurred to me that a number of classes in our codebase are 
injecting a so called 'ResourceEnvironment' so they can use it to retrieve 
a static image from whiten our deployed jar. This got me wondering if I 
could achieve something as slick as injecting the image directly with guice:

public class SomeService{

  private final Image image;

  @Inject
  public SomeService(@Named("/com/mycompany/myasset.png") myAssetImage){
    image = myAssetImage;
  }

  //big complex methods doing big complex method things.
}

//with a module containing 
public class ModuleToDoThat implements Module{
  public void configure(){
    //...
  }
  
  @Provides Image getImageWithName(Named name){
    return getClassLoader().getResource(name.value());
  }
}

This would actually reduce a fair bit of code on our code base; using 
annotations to pass meta-data about the specific instance that's needed *at 
runtime* would be a really cool feather for guice's cap. 

AFAIK the feature I'm requesting is binding annotations to be whitelisted 
(along with the calling Injector) as things that you can request without 
providing an explicit configuration path for them. A little less obtusely: 
with the injector you don't need to tell guice how to provide a provider 
method with an injector, it just assumes the injector you're looking for is 
the one doing the provide-ing. I would ask that binding annotations be 
given the same 'scope', such that any binding annotations used would be 
automatically wired to that provider method (and if they don't exist, the 
provider methods eligibility for provision removed). 

Needless to say this is a fair bit of rope to hang yourself with, in the 
event that you need to start passing more information than is available at 
annotation-writing-time, some developers (myself included) might try to 
ham-fist some things into static scope so that they can be used by the 
annotation. That said, I think the benefit outweighs the cost; it would be 
really slick and cut 50 lines of cruft off my codebase. 

I'm *fairly* certain I could hack something together with provision 
listener and a stack (probably static), but rather than go down that road I 
figured I should post this as a request-for-help and/or a feature request 
here first.

Is there a way to do this without using the SPI that would give me the same 
effect? If I was to try to do it myself with a stack and a provision 
listener, would it be as hard as I think it is? Is this something I should 
request a little more formally (by creating a github issue)?

cheers,

-Geoff


-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-guice/882e5b98-a32a-4f5a-a47f-02b4fc8d117b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to