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