I don't think that syncs entirely with the POLS.  Consider another use case:

class Foo {
  @Inject Foo() { ... }
}

bind(Foo.class)
  .toProvider(new Provider<Foo>() {
     @Override public Foo get() {
         return new Foo(..);
     }
  });

here, the @Inject annotation is wrongly put on the constructor of Foo.

I believe this is directly analogous to annotating Foo with @Singleton and
expecting that to be respected.  This is to say that it is sensible to
ignore the annotation when the binding is explicitly overriding it.

This is a good illustration of why bindings should, in general, be made as
explicit as possible within their associated modules.  Another example is
the somewhat ill-advised use of the @ImplementedBy() annotation.  Again, we
could see that annotation become ignored if an explicit binding was added.

-Fred

On Tue, Aug 31, 2010 at 8:53 AM, Brian Pontarelli <[email protected]>wrote:

> Right. That's my fix. I was probing for discussions not solutions. I'm
> inclined to say that if a class has Singleton on it, it should be honored.
> However, this impacts existing applications that are attempting to override
> the Singleton annotation via a Provider. But I would hope that isn't common.
>
> I've honestly never looked at the code, but I would assume that looking for
> annotations on instances returned from Providers would be simple enough.
>
> -bp
>
>
> On Aug 30, 2010, at 7:50 PM, Bob Lee wrote:
>
> Guice only looks at the annotation on the class when it directly creates
> instances of that class.
>
> You want:
>
>   bind(MyInterface.class).toProvider(MyProvider.class)*
> .in(Scopes.SINGLETON)*;
>
> Thanks,
> Bob
>
> --
> You received this message because you are subscribed to the Google Groups
> "google-guice" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/google-guice?hl=en.
>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "google-guice" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<google-guice%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-guice?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en.

Reply via email to