Hi-

Been lurking for a while but this is my first post so forgive my newbieness....

With solution 2, how do you call the init() method on the resource in such a 
way that it is aware of the restlet context?

Cheers,
Michael

-----Original Message-----
From: Jerome Louvel [mailto:[EMAIL PROTECTED] 
Sent: 26 February 2007 09:28
To: [email protected]
Subject: RE: Spring context and Resource


Hi all,

Thanks for the discussion. I've added a SpringFinder class into the Spring
extension package with the
Javadocs based on solution 2.

Best regards,
Jerome  

> -----Message d'origine-----
> De : Jonathan Hall [mailto:[EMAIL PROTECTED] 
> Envoyé : samedi 24 février 2007 16:10
> À : [email protected]
> Objet : Re: Spring context and Resource
> 
> Thankyou Valdis, I went with option 2 which works great.
> 
> Jonathan
> 
> 
> Valdis Rigdon wrote:
> > I've found 2 approaches that work, and there are possibly more.
> >
> > 1.  Use @Configurable on your Resource classes, and use 
> Spring AOP to 
> > inject dependencies.  Search the message archives for more 
> details on 
> > this.
> >
> > 2.  If you don't like having the dependency on AspectJ, you 
> can extend 
> > org.restlet.Finder and override createResource(Request, 
> Response) to 
> > delegate to a no-arg createResource() method (but be sure to call 
> > init() on it after it's created).  Then create a singleton 
> Spring bean 
> > based on that Finder,  and configure it using "lookup-method" to 
> > return instances of a "prototype" bean for 
> createResource().  Finally, 
> > attach the Finder to your Router.  When the 
> createResource() method is 
> > invoked, a new instance of your prototype bean will be created and 
> > returned.
> >
> >
> > A sample xml for "lookup-method":
> >
> > <bean id="myRestlet" class="com.mycompany.rest.SpringFinder">
> >        <lookup-method name="createResource" bean="myResource"/>
> > </bean>
> > <bean id="myResource" 
> class="com.mycompany.rest.resource.MyResource" 
> > scope="prototype">
> >    <property name="aProperty" value="anotherOne"/>
> >    <property name="oneMore" value="true"/>
> > </bean>
> >
> >
> > Perhaps org.restlet.Finder could be reworked so this worked 
> out of the 
> > box, instead of having to have a custom Finder object.
> >
> >
> > Valdis
> >
> >
> > Jonathan Hall wrote:
> >> Hi,
> >>
> >> Following the wiki examples, I integrated Spring and 
> Restlet by using an
> >> extended Restlet bean and handle(Request request, Response 
> response).
> >> However, it seems I would want to extend Resource instead, 
> as it has all
> >> the gubbins for get/post/put/etc. The problem is the 
> router accepts a
> >> class and not an object; so I can't use Spring to inject 
> other beans
> >> into my extended class.
> >>
> >> The following options occur to me:
> >> modify Router to accept instances,
> >> recreate the spring context on every call in the Resource,
> >> stash the springcontext in the restlet context.
> >>
> >> Have I missed something that would solve this problem, or 
> misunderstood
> >> the framework? If not, then would it be possible to add 
> something to
> >> help with this in future releases?
> >>
> >> Thanks for all the great work, I'm enjoying learning this 
> framework.
> >>
> >> Best Regards,
> >> Jonathan
> >>
> >>
> >

Reply via email to