Package org.apache.struts2.spring
Class SpringObjectFactory
java.lang.Object
org.apache.struts2.ObjectFactory
org.apache.struts2.spring.SpringObjectFactory
- All Implemented Interfaces:
 Serializable,org.springframework.beans.factory.Aware,org.springframework.context.ApplicationContextAware
- Direct Known Subclasses:
 SpringProxyableObjectFactory,StrutsSpringObjectFactory
public class SpringObjectFactory
extends ObjectFactory
implements org.springframework.context.ApplicationContextAware
Simple implementation of the ObjectFactory that makes use of Spring's application context if one has been configured, before falling back on the default mechanism of instantiating a new class using the class name.
In order to use this class in your application, you will need to instantiate a copy of this class and set it as XWork's ObjectFactory before the xwork.xml file is parsed. In a servlet environment, this could be done using a ServletContextListener.
- Author:
 - Simon Stewart ([email protected])
 - See Also:
 
- 
Field Summary
FieldsModifier and TypeFieldDescriptionprotected org.springframework.context.ApplicationContextprotected intprotected org.springframework.beans.factory.config.AutowireCapableBeanFactory - 
Constructor Summary
Constructors - 
Method Summary
Modifier and TypeMethodDescriptionautoWireBean(Object bean) autoWireBean(Object bean, org.springframework.beans.factory.config.AutowireCapableBeanFactory autoWiringFactory) Looks up beans using Spring's application context before falling back to the method defined in theObjectFactory.protected org.springframework.beans.factory.config.AutowireCapableBeanFactoryfindAutoWiringBeanFactory(org.springframework.context.ApplicationContext context) If the given context is assignable to AutowireCapbleBeanFactory or contains a parent or a factory that is, then set the autoWiringFactory appropriately.intgetClassInstance(String className) booleanAllows for ObjectFactory implementations that support Actions without no-arg constructors.voidsetAlwaysRespectAutowireStrategy(boolean alwaysRespectAutowireStrategy) Determines if the autowire strategy is always followed when creating beansvoidsetApplicationContext(org.springframework.context.ApplicationContext appContext) Set the Spring ApplicationContext that should be used to look beans up with.voidvoidsetAutowireStrategy(int autowireStrategy) Sets the autowiring strategyvoidsetEnableAopSupport(String enableAopSupport) voidsetUseClassCache(boolean useClassCache) Enable / disable caching of classes loaded by Spring.Methods inherited from class org.apache.struts2.ObjectFactory
buildAction, buildBean, buildConverter, buildInterceptor, buildResult, buildUnknownHandler, buildValidator, injectInternalBeans, setActionFactory, setClassLoader, setContainer, setConverterFactory, setInterceptorFactory, setResultFactory, setUnknownHandlerFactory, setValidatorFactory 
- 
Field Details
- 
appContext
protected org.springframework.context.ApplicationContext appContext - 
autoWiringFactory
protected org.springframework.beans.factory.config.AutowireCapableBeanFactory autoWiringFactory - 
autowireStrategy
protected int autowireStrategy 
 - 
 - 
Constructor Details
- 
SpringObjectFactory
public SpringObjectFactory() 
 - 
 - 
Method Details
- 
setApplicationContextPath
 - 
setEnableAopSupport
 - 
setApplicationContext
public void setApplicationContext(org.springframework.context.ApplicationContext appContext) throws org.springframework.beans.BeansException Set the Spring ApplicationContext that should be used to look beans up with.- Specified by:
 setApplicationContextin interfaceorg.springframework.context.ApplicationContextAware- Parameters:
 appContext- The Spring ApplicationContext that should be used to look beans up with.- Throws:
 org.springframework.beans.BeansException
 - 
setAutowireStrategy
public void setAutowireStrategy(int autowireStrategy) Sets the autowiring strategy- Parameters:
 autowireStrategy- the autowire strategy
 - 
getAutowireStrategy
public int getAutowireStrategy() - 
findAutoWiringBeanFactory
protected org.springframework.beans.factory.config.AutowireCapableBeanFactory findAutoWiringBeanFactory(org.springframework.context.ApplicationContext context) If the given context is assignable to AutowireCapbleBeanFactory or contains a parent or a factory that is, then set the autoWiringFactory appropriately.- Parameters:
 context- the application context- Returns:
 - the bean factory
 
 - 
buildBean
public Object buildBean(String beanName, Map<String, Object> extraContext, boolean injectInternal) throws ExceptionLooks up beans using Spring's application context before falling back to the method defined in theObjectFactory.- Overrides:
 buildBeanin classObjectFactory- Parameters:
 beanName- The name of the bean to look up in the application contextextraContext- additional context parameters- Returns:
 - A bean from Spring or the result of calling the overridden method.
 - Throws:
 Exception- in case of any errors
 - 
buildBean
- Overrides:
 buildBeanin classObjectFactory- Parameters:
 clazz- class of beanextraContext- additional context parameters- Returns:
 - bean
 - Throws:
 Exception- in case of any errors
 - 
autoWireBean
 - 
autoWireBean
public Object autoWireBean(Object bean, org.springframework.beans.factory.config.AutowireCapableBeanFactory autoWiringFactory) - Parameters:
 bean- the bean to be autowiredautoWiringFactory- the autowiring factory- Returns:
 - bean
 
 - 
getClassInstance
- Overrides:
 getClassInstancein classObjectFactory- Throws:
 ClassNotFoundException
 - 
isNoArgConstructorRequired
public boolean isNoArgConstructorRequired()Allows for ObjectFactory implementations that support Actions without no-arg constructors.- Overrides:
 isNoArgConstructorRequiredin classObjectFactory- Returns:
 - false
 
 - 
setUseClassCache
public void setUseClassCache(boolean useClassCache) Enable / disable caching of classes loaded by Spring.- Parameters:
 useClassCache- enable / disable class cache
 - 
setAlwaysRespectAutowireStrategy
public void setAlwaysRespectAutowireStrategy(boolean alwaysRespectAutowireStrategy) Determines if the autowire strategy is always followed when creating beans- Parameters:
 alwaysRespectAutowireStrategy- True if the strategy is always used
 
 -