You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by ML...@abusinessware.com on 2007/08/13 09:13:56 UTC

RE [S2] autowiring with hand rolled factory

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 <ah...@cyberspaceroad.com> 
12/08/2007 11:25
Veuillez répondre à
"Struts Users Mailing List" <us...@struts.apache.org>


A
Struts Users Mailing List <us...@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?


Thanks
Adam


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org



Re: RE [S2] autowiring with hand rolled factory

Posted by Adam Hardy <ah...@cyberspaceroad.com>.
The Spring integration isn't something I'd looked into deeply. I just assumed 
I'd be repeating my list of actions, knowing only what I have read about so far. 
This isn't the first time struts2 has proved my assumptions wrong - and always 
in a good way I'm glad to report.

Laurie Harper on 14/08/07 17:03, wrote:
> Adam Hardy wrote:
[snipped]
>> 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?
>>>>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: RE [S2] autowiring with hand rolled factory

Posted by Laurie Harper <la...@holoweb.net>.
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
>>>
>>> MLENEVEUT@abusinessware.com 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 <ah...@cyberspaceroad.com> 12/08/2007 11:25
>>>> Veuillez répondre à
>>>> "Struts Users Mailing List" <us...@struts.apache.org>
>>>>
>>>> A
>>>> Struts Users Mailing List <us...@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: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: RE [S2] autowiring with hand rolled factory

Posted by Adam Hardy <ah...@cyberspaceroad.com>.
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.

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.




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
>>
>> MLENEVEUT@abusinessware.com 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 <ah...@cyberspaceroad.com> 12/08/2007 11:25
>>> Veuillez répondre à
>>> "Struts Users Mailing List" <us...@struts.apache.org>
>>>
>>> A
>>> Struts Users Mailing List <us...@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: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: RE [S2] autowiring with hand rolled factory

Posted by Laurie Harper <la...@holoweb.net>.
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
> 
> MLENEVEUT@abusinessware.com 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 <ah...@cyberspaceroad.com> 12/08/2007 11:25
>> Veuillez répondre à
>> "Struts Users Mailing List" <us...@struts.apache.org>
>>
>>
>> A
>> Struts Users Mailing List <us...@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: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: RE [S2] autowiring with hand rolled factory

Posted by Adam Hardy <ah...@cyberspaceroad.com>.
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

MLENEVEUT@abusinessware.com 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 <ah...@cyberspaceroad.com> 
> 12/08/2007 11:25
> Veuillez répondre à
> "Struts Users Mailing List" <us...@struts.apache.org>
> 
> 
> A
> Struts Users Mailing List <us...@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: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org