On Wed, Jun 13, 2012 at 7:12 AM, Muhammad Gelbana <m.gelb...@gmail.com> wrote:
> I faced the same problem and I'm using the constructor's injection instead.
> But why wouldn't the deprecated @InjectResource nor the @Inject annotation
> work ? I'm using tapestry5.3.1

Without seeing the code, there's no way to answer.

http://catb.org/esr/faqs/smart-questions.html

>
> On Wed, Dec 29, 2010 at 1:33 AM, Howard Lewis Ship <hls...@gmail.com> wrote:
>
>> You're seeing the evolution of the framework.
>>
>> Originally, there was only constructor injection for services.  This is
>> because we did not, originally, use a special class loader for service
>> implementations and we were trying to avoid reflection.
>>
>> Components always used a special class loader, which allowed for proper
>> injection (including intercepting attempted updates to the fields, to make
>> the read-only).
>>
>> Later (5.1 I believe) we started allowing injection into fields of service
>> implementation, using reflection.
>>
>> However, there's an ambiguity.  Normally, once Tapestry selects a
>> constructor, it provides an injection value for each parameter, based on
>> type (and other annotation).
>>
>> Normally, a component parameter of type Logger is recognized, by type, as a
>> service resource (i.e., not another service, but a unique value constructed
>> just for this service).  Adding the @Inject annotation tells Tapestry to
>> ignore it as a service resource and resolve it as an ordinary injection
>> (i.e., a service, or an object obtained from the MasterObjectProvider).
>>
>> For fields, each field needs an @Inject annotation (Tapestry ignores most
>> fields and only performs injection on the ones that need it).  But
>> that ambiguity ... @Inject should also work the same for a field as it does
>> for a parameter (meaning, resolve as a service, not a resource).  The
>> solution was yet another annotation, @InjectResource, which is only for
>> fields, and indicates that Tapestry should perform a resource injection on
>> the field, as it would for a constructor parameter.
>>
>> Confusing?  Yes, just a touch. It's one of the reasons I prefer constructor
>> injection.
>>
>> On Tue, Dec 28, 2010 at 3:15 PM, Thiago H. de Paula Figueiredo <
>> thiag...@gmail.com> wrote:
>>
>> > On Tue, 28 Dec 2010 21:11:58 -0200, Josh Canfield <
>> joshcanfi...@gmail.com>
>> > wrote:
>> >
>> >  Weird. Has that always been true?
>> >>
>> >
>> > No. I can't remember when, though.
>> >
>> >
>> >  I'm also confused
>> >> why @Inject would work with Logger in a Component, but not in a service.
>> >>
>> >
>> > Injection of some object types are handled by class transformations, not
>> > IoC.
>> >
>> >
>> > --
>> > Thiago H. de Paula Figueiredo
>> > Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,
>> > and instructor
>> > Owner, Ars Machina Tecnologia da Informação Ltda.
>> > http://www.arsmachina.com.br
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> > For additional commands, e-mail: users-h...@tapestry.apache.org
>> >
>> >
>>
>>
>> --
>> Howard M. Lewis Ship
>>
>> Creator of Apache Tapestry
>>
>> The source for Tapestry training, mentoring and support. Contact me to
>> learn
>> how I can get you up and productive in Tapestry fast!
>>
>> (971) 678-5210
>> http://howardlewisship.com
>>
>
>
>
> --
> *Regards,*
> *Muhammad Gelbana
> Java Developer*



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to