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:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected org.springframework.context.ApplicationContext`
  `appContext`
  `protected int`
  `autowireStrategy`
  `protected org.springframework.beans.factory.config.AutowireCapableBeanFactory`
  `autoWiringFactory`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SpringObjectFactory()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `autoWireBean(Object bean)`
  `Object`
  `autoWireBean(Object bean, org.springframework.beans.factory.config.AutowireCapableBeanFactory autoWiringFactory)`
  `Object`
  `buildBean(Class clazz, Map<String,Object> extraContext)`
  `Object`
  `buildBean(String beanName, Map<String,Object> extraContext, boolean injectInternal)`
  Looks up beans using Spring's application context before falling back to the method defined in the `ObjectFactory`.
  `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`
  `getAutowireStrategy()`
  `Class`
  `getClassInstance(String className)`
  `boolean`
  `isNoArgConstructorRequired()`
  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 beans
  `void`
  `setApplicationContext(org.springframework.context.ApplicationContext appContext)`
  Set the Spring ApplicationContext that should be used to look beans up with.
  `void`
  `setApplicationContextPath(String ctx)`
  `void`
  `setAutowireStrategy(int autowireStrategy)`
  Sets the autowiring strategy
  `void`
  `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`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## 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

    public void setApplicationContextPath(String ctx)

  - ### setEnableAopSupport

    public void setEnableAopSupport(String enableAopSupport)

  - ### 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 interface `org.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 Exception
    Looks up beans using Spring's application context before falling back to the method defined in the `ObjectFactory`.
    Overrides:
      `buildBean` in class `ObjectFactory`
    Parameters:
      `beanName` - The name of the bean to look up in the application context
      `extraContext` - additional context parameters
    Returns:
      A bean from Spring or the result of calling the overridden method.
    Throws:
      `Exception` - in case of any errors

  - ### buildBean

    public Object buildBean(Class clazz, Map<String,Object> extraContext) throws Exception
    Overrides:
      `buildBean` in class `ObjectFactory`
    Parameters:
      `clazz` - class of bean
      `extraContext` - additional context parameters
    Returns:
      bean
    Throws:
      `Exception` - in case of any errors

  - ### autoWireBean

    public Object autoWireBean(Object bean)

  - ### autoWireBean

    public Object autoWireBean(Object bean, org.springframework.beans.factory.config.AutowireCapableBeanFactory autoWiringFactory)
    Parameters:
      `bean` - the bean to be autowired
      `autoWiringFactory` - the autowiring factory
    Returns:
      bean

  - ### getClassInstance

    public Class getClassInstance(String className) throws ClassNotFoundException
    Overrides:
      `getClassInstance` in class `ObjectFactory`
    Throws:
      `ClassNotFoundException`

  - ### isNoArgConstructorRequired

    public boolean isNoArgConstructorRequired()
    Allows for ObjectFactory implementations that support Actions without no-arg constructors.
    Overrides:
      `isNoArgConstructorRequired` in class `ObjectFactory`
    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