## org.springframework.aop.target
Class LazyInitTargetSource

    java.lang.Object
      org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
          org.springframework.aop.target.LazyInitTargetSource

All Implemented Interfaces:
  Serializable, TargetClassAware, TargetSource, BeanFactoryAware

    public class LazyInitTargetSource

extends AbstractBeanFactoryBasedTargetSource

`TargetSource` that lazily accesses a singleton bean from a `BeanFactory`.

Useful when a proxy reference is needed on initialization but the actual target object should not be initialized until first use. When the target bean is defined in an `ApplicationContext` (or a `BeanFactory` that is eagerly pre-instantiating singleton beans) it must be marked as "lazy-init" too, else it will be instantiated by said `ApplicationContext` (or `BeanFactory`) on startup.

For example:

     <bean id="serviceTarget" class="example.MyService" lazy-init="true">
       ...
     </bean>

     <bean id="service" class="org.springframework.aop.framework.ProxyFactoryBean">
       <property name="targetSource">
         <bean class="org.springframework.aop.target.LazyInitTargetSource">
           <property name="targetBeanName"><idref local="serviceTarget"/></property>
         </bean>
       </property>
     </bean>

The "serviceTarget" bean will not get initialized until a method on the "service" proxy gets invoked.

Subclasses can extend this class and override the `postProcessTargetObject(Object)` to perform some additional processing with the target object when it is first loaded.

Since:
  1.1.4
Author:
  Juergen Hoeller, Rob Harrop
See Also:
  `BeanFactory.getBean(java.lang.String)`, `postProcessTargetObject(java.lang.Object)`, Serialized Form

Field Summary

Fields inherited from class org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
`logger`

Constructor Summary
`LazyInitTargetSource()`

Method Summary
`Object` `getTarget()` Return a target instance.
`protected void` `postProcessTargetObject(Object targetObject)` Subclasses may override this method to perform additional processing on the target object when it is first loaded.

Methods inherited from class org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
`copyFrom, equals, getBeanFactory, getTargetBeanName, getTargetClass, hashCode, isStatic, releaseTarget, setBeanFactory, setTargetBeanName, setTargetClass, toString`

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

Constructor Detail

### LazyInitTargetSource

    public LazyInitTargetSource()

Method Detail

### getTarget

    public Object getTarget()
                     throws BeansException

  Description copied from interface: `TargetSource`
  Return a target instance. Invoked immediately before the AOP framework calls the "target" of an AOP method invocation.

  Returns:
    the target object, which contains the joinpoint
  Throws:
    `BeansException`

### postProcessTargetObject

    protected void postProcessTargetObject(Object targetObject)

  Subclasses may override this method to perform additional processing on the target object when it is first loaded.

  Parameters:
    `targetObject` - the target object that has just been instantiated (and configured)