Provide mechanism to avoid instantiating Spring managed actions at startup
--------------------------------------------------------------------------
Key: WW-1821
URL: https://issues.apache.org/struts/browse/WW-1821
Project: Struts 2
Issue Type: Improvement
Components: Actions
Affects Versions: 2.0.6
Reporter: marco ocana
Priority: Minor
When Spring is used as the object factory for actions, Struts 2 will
instantiate at application load time each of the action beans defined in
struts.xml.
It would be very useful to avoid this behavior if possible, particularly during
development. Because of dependencies defined in Spring, instantiating the
action objects can also mean instantiating expensive resources such as
datasources that might not be immediately needed.
This feature can make the difference between restarting the server in 10
seconds versus multiple minutes. Would be a big productivity boost.
In looking through the code, it appears that the instantiation of actions
occurs in the process of verifying that the struts.xml configuration is valid.
Specifically, it checks that the classes that implement the actions have no-arg
constructors that are public.
In the case of the default ObjectFactory, the class defined in the
configuration is loaded and evaluated using the reflection API. When the
SpringObjectFactory is used however, the action implementation class is
obtained by requesting the action bean from Spring and then getting its class.
Ideally, we would examine metadata and determine the validity of the action
definition without actually creating the action. Don't know how difficult
Spring makes this.
If it turns out that the verification cannot avoid instantiating actions, then
I propose that a configuration option be provided that would short-circuit
checking the action classes, presumably in struts.properties . During
development, the risk of having an action blow up is acceptable.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.