com.opensymphony.xwork2.spring.interceptor

## Class ActionAutowiringInterceptor

- java.lang.Object
- - org.apache.struts2.interceptor.AbstractInterceptor
  - - com.opensymphony.xwork2.interceptor.AbstractInterceptor
    - - com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor

- All Implemented Interfaces:
    Serializable, ConditionalInterceptor, Interceptor, org.springframework.beans.factory.Aware, org.springframework.context.ApplicationContextAware

      public class ActionAutowiringInterceptor
      extends AbstractInterceptor
      implements org.springframework.context.ApplicationContextAware

  TODO: Give a description of the Interceptor. TODO: Describe the parameters for this Interceptor. TODO: Discuss some possible extension of the Interceptor.

       <!-- TODO: Describe how the Interceptor reference will effect execution -->
       <action name="someAction" class="com.examples.SomeAction">
            TODO: fill in the interceptor reference.
           <interceptor-ref name=""/>
           <result name="success">good_result.ftl</result>
       </action>

  Autowires action classes to Spring beans. The strategy for autowiring the beans can be configured by setting the parameter on the interceptor. Actions that need access to the `ActionContext` can implements the `ApplicationContextAware` interface. The context will also be placed on the action context under the APPLICATION_CONTEXT attribute.

  Author:
    Simon Stewart, Eric Hauser
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface com.opensymphony.xwork2.interceptor.ConditionalInterceptor

      `ConditionalInterceptor.LegacyAdapter`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ActionAutowiringInterceptor()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected org.springframework.context.ApplicationContext` | `getApplicationContext()`
    `String` | `intercept(ActionInvocation invocation)` Looks for the `ApplicationContext` under the attribute that the Spring listener sets in the servlet context.
    `void` | `setApplicationContext(org.springframework.context.ApplicationContext applicationContext)`
    `void` | `setAutowireStrategy(Integer autowireStrategy)`

    - ### Methods inherited from class com.opensymphony.xwork2.interceptor.AbstractInterceptor

      `intercept, shouldIntercept, shouldIntercept`

    - ### Methods inherited from class org.apache.struts2.interceptor.AbstractInterceptor

      `destroy, init, setDisabled`

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

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

    - ### Methods inherited from interface com.opensymphony.xwork2.interceptor.ConditionalInterceptor

      `adapt`

    - ### Methods inherited from interface com.opensymphony.xwork2.interceptor.Interceptor

      `adapt`

    - ### Methods inherited from interface org.apache.struts2.interceptor.Interceptor

      `destroy, init`

- - ### Constructor Detail

    - #### ActionAutowiringInterceptor

          public ActionAutowiringInterceptor()

  - ### Method Detail

    - #### setAutowireStrategy

          public void setAutowireStrategy(Integer autowireStrategy)

      Parameters:
        `autowireStrategy` - the autowire strategy

    - #### intercept

          public String intercept(ActionInvocation invocation)
                           throws Exception

      Looks for the `ApplicationContext` under the attribute that the Spring listener sets in the servlet context. The configuration is done the first time here instead of in init() since the `ActionContext` is not available during `Interceptor` initialization.

      Autowires the action to Spring beans and places the `ApplicationContext` on the `ActionContext`

      TODO: Should this check to see if the `SpringObjectFactory` has already been configured instead of instantiating a new one? Or is there a good reason for the interceptor to have it's own factory?

      Specified by:
        `intercept` in class `AbstractInterceptor`
      Parameters:
        `invocation` - the action invocation
      Throws:
        `Exception` - in case of any errors

    - #### setApplicationContext

          public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
                                     throws org.springframework.beans.BeansException

      Specified by:
        `setApplicationContext` in interface `org.springframework.context.ApplicationContextAware`
      Parameters:
        `applicationContext` - the application context
      Throws:
        `org.springframework.beans.BeansException` - in case of errors

    - #### getApplicationContext

          protected org.springframework.context.ApplicationContext getApplicationContext()

      Returns:
        the application context

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