Adam Hardy wrote:
Um? It's not obvious what the rationale is, I assure you. Of course the
Spring object factory is feature rich, but which particular features was
it? Or perhaps the lack of obviousness is just an artifact of the way I
have learnt the ropes of Struts2.
I don't think it's a case of any specific feature of Spring being the
reason for making this functionality available; the point is that it
allows you to leverage any and all of the Spring richness in the
instantiation of your action instances. If you don't want any of it, you
don't need to use it.
It seems like struts2 says:
1: here's struts.xml where you configure your actions
2: here's an autowiring interceptor and it uses Spring to grab
dependencies for your actions
3: by the way, if you want to list all your actions in Spring as well as
in struts.xml, it's kind of cool.
Of course at point 3 I immediately think, why would I want to do that
again? Can't I save myself the effort of doing it twice? I guess I'm
expecting an attribute on the action node that would define an object
factory reference where the action bean would be found, instead of a class.
Isn't that what you get when you use the Spring plugin? Instead of your
action mappings specifying fully qualified class names, they specify a
logical name which is defined by your Spring configuration. With that
done you have all the advantages of Spring, such as dependency
injection, the ability to substitute alternative implementations of your
actions (or their dependencies) by swapping out configurations, etc.
Again, the Spring plugin is entirely optional. If you don't want or need
any of the facilities Spring provides to help manage instances of your
actions, you don't need to use the Spring plugin. If you *do* want to
take advantage of any of Spring's features at this layer, the plugin
makes that facility available to you.
L.
Laurie Harper on 13/08/07 22:11, wrote:
Um, to allow all the capabilities of Spring (dependency injection, AOP
or whatever) to be applied to action instances?
L.
Adam Hardy wrote:
Thanks for the explanation. What would you say the main rationale is
then for using Spring as a factory for the actions instead of the
struts objectfactory?
Regards
Adam
[EMAIL PROTECTED] on 13/08/07 08:13, wrote:
Did you set this in your struts.xml ?
<constant name="struts.objectFactory" value="spring" />
or
<constant name="struts.objectFactory" value=
"org.myorg.mySpringContextFactory" />
For Autowiring, it's enable by default. But you can customise it :
http://struts.apache.org/2.0.9/docs/spring-plugin.html
The framework enables "autowiring" by default. (Autowiring means to
look for objects defined in Spring with the same name as your object
property). To change the wiring mode, modify the spring.autowire
property.
Wiring Mode
struts.objectFactory.spring.autoWire = type
The autowire property can be set to several options.
name Auto-wire by matching the name of the bean in Spring with the
name of the property in your action. This is the default type
Auto-wire by looking for a bean registered with Spring of the same
type as the property in your action. This requires you to have only
one bean of this type registered with Spring auto Spring will
attempt to auto-detect the best method for auto-wiring your action
constructor Spring will auto-wire the parameters of the bean's
constructor
By default, the framework will at least try to use Spring to create
all its objects. If the object cannot be created by Spring, then the
framework will create the object itself.
Adam Hardy <[EMAIL PROTECTED]> 12/08/2007 11:25
Veuillez répondre à
"Struts Users Mailing List" <user@struts.apache.org>
A
Struts Users Mailing List <user@struts.apache.org>
cc
Objet
[S2] autowiring with hand rolled factory
I'm sure I saw some references to this in the documentation before
but I can't find it again now that I need it.
I have my own context factory for Spring which I want to plug into
the struts framework, but I can't work out how to set up the
autowiring interceptor .
It seems I must replace ActionAutoWiringInterceptor and configure it
as 'anotherAutowiring' or similar. Would that be correct?
While I'm on the subject, I'm not planning on setting up my actions in
Spring, so I assume that struts2 will use its own ObjectFactory to do
this. What is the reasoning behind the functionality that allows me to
set up my actions in Spring? Is it just the rich configuration
possibilities that Spring offers which struts wants to harness?
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]