程序包 infra.aop.target

类 LazyInitTargetSource

所有已实现的接口:
TargetClassAware, TargetSource, infra.beans.factory.Aware, infra.beans.factory.BeanFactoryAware, Serializable

public class LazyInitTargetSource extends AbstractBeanFactoryTargetSource
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 infra.context.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="infra.aop.framework.ProxyFactoryBean">
   <property name="targetSource">
     <bean class="infra.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.

从以下版本开始:
4.0
作者:
Juergen Hoeller, Rob Harrop
另请参阅:
  • 字段详细资料

    • target

      @Nullable private Object target
  • 构造器详细资料

    • LazyInitTargetSource

      public LazyInitTargetSource()
  • 方法详细资料

    • getTarget

      @Nullable public Object getTarget() throws infra.beans.BeansException
      从接口复制的说明: TargetSource
      Return a target instance. Invoked immediately before the AOP framework calls the "target" of an AOP method invocation.
      返回:
      the target object which contains the join-point, or null if there is no actual target instance
      抛出:
      infra.beans.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.
      参数:
      targetObject - the target object that has just been instantiated (and configured)