The lack of this feature is by design.  See the discussion @
https://github.com/google/guice/issues/49.

sam

On Mon, May 4, 2015 at 9:05 AM David Nouls <[email protected]> wrote:

> In my applications I need to be able to have some influence on how Guice
> searches for bindings.
>
> The problem that I am trying to solve:
> I have a system to generate alerts. The code that generates these alerts
> need to declare an interface that extends a marker interface and all the
> methods use annotations to declare the actual text with placeholders for
> the parameters. The actual implementation of this interface is done by one
> single dynamic proxy implementation. For example
>
> public interface Alerts {}
>
> public interface TestAlerts extends Alerts {
>   @Alert( "Hello {0}" )
>   public void hello( String text );
> }
>
> In the application code I inject the TestAlerts and use it like a regular
> object. The advantage of this approach is that I get nice compiler warnings
> whenever a change to parameters is done, or a message has been removed from
> the Alerts interface. I can also do decent formatting and type conversion
> without complicating the code that uses my Alert system.
>
> Right now I have 2 possibilities in Guice:
> 1) bind all interfaces that extends Alerts with a provider that can create
> the dynamic proxy specific to the requested interface.
> 2) Inject an AlertFactory that has a <V extends Alerts> V create(Class<V>
> typeClass ) method.
>
> Solution 1 becomes tedious because in my case we are talking about
> hundreds of injections (large enterprise system with lots of independent
> components).
> Solution 2 exposes the fact that you need to use a factory to send a
> simple alert. Somehow this feels a bit like an anti-pattern because I am
> not interested in how to create these objects, I just want on instance by
> magic as I am used in injection frameworks.
>
> I've read and tried the documentation section on custom Custom Injections
> <https://github.com/google/guice/wiki/CustomInjections>. But is very
> incomplete, since it only allows injection into members, not constructors
> and it requires you to use a custom annotation, not @Inject which basically
> already requires the class to know that what he is depending on needs some
> kind of extension - which sounds like an anti-pattern to me.
>
> I would like to be able to somehow register that Guice should use a
> Factory that takes an argument of type class<V extends Alerts>. Or someway
> to register a TypeListener that gets invoked when some unknown type is
> requested for injection.
>
> Any ideas how to do this ? Any chance of getting some extra extension
> point in Guice to go a step further with extensions ?
>
>
>  --
> 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/d3e36ad3-c49b-4cbb-9640-6527877491bd%40googlegroups.com
> <https://groups.google.com/d/msgid/google-guice/d3e36ad3-c49b-4cbb-9640-6527877491bd%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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/CAJEBNUeK-Ls%3DXZgP-h3gvg0KCGEuK%3Dp4ZTCtKBrThNHprGUT8w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to