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.