com.opensymphony.xwork2.spring

## Class SpringObjectFactory

- java.lang.Object
- - com.opensymphony.xwork2.ObjectFactory
  - - com.opensymphony.xwork2.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 and Description
    --- | ---
    `protected org.springframework.context.ApplicationContext` | `appContext`
    `protected int` | `autowireStrategy`
    `protected org.springframework.beans.factory.config.AutowireCapableBeanFactory` | `autoWiringFactory`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SpringObjectFactory()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and 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 com.opensymphony.xwork2.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 Detail

    - #### appContext

          protected org.springframework.context.ApplicationContext appContext

    - #### autoWiringFactory

          protected org.springframework.beans.factory.config.AutowireCapableBeanFactory autoWiringFactory

    - #### autowireStrategy

          protected int autowireStrategy

  - ### Constructor Detail

    - #### SpringObjectFactory

          public SpringObjectFactory()

  - ### Method Detail

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

Copyright © 2000–2026 Apache Software Foundation. All rights reserved.