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 (sms@lateral.net)
- 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
-