## org.springframework.ejb.interceptor
Class SpringBeanAutowiringInterceptor

    java.lang.Object
      org.springframework.ejb.interceptor.SpringBeanAutowiringInterceptor

    public class SpringBeanAutowiringInterceptor

extends Object

EJB3-compliant interceptor class that injects Spring beans into fields and methods which are annotated with `@Autowired`. Performs injection after construction as well as after activation of a passivated bean.

To be applied through an `@Interceptors` annotation in the EJB Session Bean or Message-Driven Bean class, or through an `interceptor-binding` XML element in the EJB deployment descriptor.

Delegates to Spring's `AutowiredAnnotationBeanPostProcessor` underneath, allowing for customization of its specific settings through overriding the `configureBeanPostProcessor(org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor, java.lang.Object)` template method.

The actual BeanFactory to obtain Spring beans from is determined by the `getBeanFactory(java.lang.Object)` template method. The default implementation obtains the Spring `ContextSingletonBeanFactoryLocator`, initialized from the default resource location classpath*:beanRefContext.xml, and obtains the single ApplicationContext defined there.

NOTE: If you have more than one shared ApplicationContext definition available in your EJB class loader, you need to override the `getBeanFactoryLocatorKey(java.lang.Object)` method and provide a specific locator key for each autowired EJB. Alternatively, override the `getBeanFactory(java.lang.Object)` template method and obtain the target factory explicitly.

WARNING: Do not define the same bean as Spring-managed bean and as EJB3 session bean in the same deployment unit. In particular, be careful when using the `&lt;context:component-scan&gt;` feature in combination with the deployment of Spring-based EJB3 session beans: Make sure that the EJB3 session beans are not autodetected as Spring-managed beans as well, using appropriate package restrictions.

Since:
  2.5.1
Author:
  Juergen Hoeller
See Also:
  `Autowired`, `AutowiredAnnotationBeanPostProcessor`, `ContextSingletonBeanFactoryLocator`, `getBeanFactoryLocatorKey(java.lang.Object)`

Constructor Summary
`SpringBeanAutowiringInterceptor()`

Method Summary
`void` `autowireBean(InvocationContext invocationContext)` Autowire the target bean after construction as well as after passivation.
`protected void` `configureBeanPostProcessor(AutowiredAnnotationBeanPostProcessor processor, Object target)` Template method for configuring the `AutowiredAnnotationBeanPostProcessor` used for autowiring.
`protected void` `doAutowireBean(Object target)` Actually autowire the target bean after construction/passivation.
`protected void` `doReleaseBean(Object target)` Actually release the BeanFactoryReference for the given target bean.
`protected BeanFactory` `getBeanFactory(Object target)` Determine the BeanFactory for autowiring the given target bean.
`protected BeanFactoryLocator` `getBeanFactoryLocator(Object target)` Determine the BeanFactoryLocator to obtain the BeanFactoryReference from.
`protected String` `getBeanFactoryLocatorKey(Object target)` Determine the BeanFactoryLocator key to use.
`protected BeanFactoryReference` `getBeanFactoryReference(Object target)` Determine the BeanFactoryReference for the given target bean.
`void` `releaseBean(InvocationContext invocationContext)` Release the factory which has been used for autowiring the target bean.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### SpringBeanAutowiringInterceptor

    public SpringBeanAutowiringInterceptor()

Method Detail

### autowireBean

    @PostConstruct
    public void autowireBean(InvocationContext invocationContext)

  Autowire the target bean after construction as well as after passivation.

  Parameters:
    `invocationContext` - the EJB3 invocation context

### doAutowireBean

    protected void doAutowireBean(Object target)

  Actually autowire the target bean after construction/passivation.

  Parameters:
    `target` - the target bean to autowire

### configureBeanPostProcessor

    protected void configureBeanPostProcessor(AutowiredAnnotationBeanPostProcessor processor,
                                              Object target)

  Template method for configuring the `AutowiredAnnotationBeanPostProcessor` used for autowiring.

  Parameters:
    `processor` - the AutowiredAnnotationBeanPostProcessor to configure
    `target` - the target bean to autowire with this processor

### getBeanFactory

    protected BeanFactory getBeanFactory(Object target)

  Determine the BeanFactory for autowiring the given target bean.

  Parameters:
    `target` - the target bean to autowire
  Returns:
    the BeanFactory to use (never `null`)
  See Also:
    `getBeanFactoryReference(java.lang.Object)`

### getBeanFactoryReference

    protected BeanFactoryReference getBeanFactoryReference(Object target)

  Determine the BeanFactoryReference for the given target bean.

  The default implementation delegates to `getBeanFactoryLocator(java.lang.Object)` and `getBeanFactoryLocatorKey(java.lang.Object)`.

  Parameters:
    `target` - the target bean to autowire
  Returns:
    the BeanFactoryReference to use (never `null`)
  See Also:
    `getBeanFactoryLocator(java.lang.Object)`, `getBeanFactoryLocatorKey(java.lang.Object)`, `BeanFactoryLocator.useBeanFactory(String)`

### getBeanFactoryLocator

    protected BeanFactoryLocator getBeanFactoryLocator(Object target)

  Determine the BeanFactoryLocator to obtain the BeanFactoryReference from.

  The default implementation exposes Spring's default `ContextSingletonBeanFactoryLocator`.

  Parameters:
    `target` - the target bean to autowire
  Returns:
    the BeanFactoryLocator to use (never `null`)
  See Also:
    `ContextSingletonBeanFactoryLocator.getInstance()`

### getBeanFactoryLocatorKey

    protected String getBeanFactoryLocatorKey(Object target)

  Determine the BeanFactoryLocator key to use. This typically indicates the bean name of the ApplicationContext definition in classpath*:beanRefContext.xml resource files.

  The default is `null`, indicating the single ApplicationContext defined in the locator. This must be overridden if more than one shared ApplicationContext definition is available.

  Parameters:
    `target` - the target bean to autowire
  Returns:
    the BeanFactoryLocator key to use (or `null` for referring to the single ApplicationContext defined in the locator)

### releaseBean

    @PreDestroy
    public void releaseBean(InvocationContext invocationContext)

  Release the factory which has been used for autowiring the target bean.

  Parameters:
    `invocationContext` - the EJB3 invocation context

### doReleaseBean

    protected void doReleaseBean(Object target)

  Actually release the BeanFactoryReference for the given target bean.

  Parameters:
    `target` - the target bean to release