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.ApplicationContext
protected int
protected 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.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.int
getClassInstance
(String className) boolean
Allows for ObjectFactory implementations that support Actions without no-arg constructors.void
setAlwaysRespectAutowireStrategy
(boolean alwaysRespectAutowireStrategy) Determines if the autowire strategy is always followed when creating beansvoid
setApplicationContext
(org.springframework.context.ApplicationContext appContext) Set the Spring ApplicationContext that should be used to look beans up with.void
void
setAutowireStrategy
(int autowireStrategy) Sets the autowiring strategyvoid
setEnableAopSupport
(String enableAopSupport) void
setUseClassCache
(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:
setApplicationContext
in 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:
buildBean
in 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:
buildBean
in 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:
getClassInstance
in classObjectFactory
- Throws:
ClassNotFoundException
-
isNoArgConstructorRequired
public boolean isNoArgConstructorRequired()Allows for ObjectFactory implementations that support Actions without no-arg constructors.- Overrides:
isNoArgConstructorRequired
in 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
-