接口 Advised

所有超级接口:
TargetClassAware
所有已知实现类:
AdvisedSupport, AspectJProxyFactory, ProxyCreatorSupport, ProxyFactory, ProxyFactoryBean

public interface Advised extends TargetClassAware
Interface to be implemented by classes that hold the configuration of a factory of AOP proxies. This configuration includes the Interceptors and other advice, Advisors, and the proxied interfaces.

Any AOP proxy obtained from can be cast to this interface to allow manipulation of its AOP advice.

从以下版本开始:
3.0
作者:
Rod Johnson, Juergen Hoeller, TODAY 2021/2/1 19:03
另请参阅:
  • 方法概要

    修饰符和类型
    方法
    说明
    void
    addAdvice(int pos, Advice advice)
    Add the given AOP Alliance Advice at the specified position in the advice chain.
    void
    addAdvice(Advice advice)
    Add the given AOP Alliance advice to the tail of the advice (interceptor) chain.
    void
    addAdvisor(int pos, Advisor advisor)
    Add an Advisor at the specified position in the chain.
    void
    Add an advisor at the end of the advisor chain.
    int
    Return the number of advisors applying to this proxy.
    Return the advisors applying to this proxy.
    Class<?>[]
    Return the interfaces proxied by the AOP proxy.
    Return the TargetSource used by this Advised object.
    int
    indexOf(Advisor advisor)
    Return the index (from 0) of the given advisor, or -1 if no such advisor applies to this proxy.
    int
    indexOf(Advice advice)
    Return the index (from 0) of the given AOP Alliance Advice, or -1 if no such advice is an advice for this proxy.
    boolean
    Return whether the factory should expose the proxy as a ThreadLocal.
    boolean
    Return whether the Advised configuration is frozen, in which case no advice changes can be made.
    boolean
    Determine whether the given interface is proxied.
    boolean
    Return whether this proxy configuration is pre-filtered so that it only contains applicable advisors (matching this proxy's target class).
    boolean
    Are we proxying the full target class instead of specified interfaces?
    boolean
    Remove the Advisor containing the given advice.
    void
    removeAdvisor(int index)
    Remove the advisor at the given index.
    boolean
    Remove the given advisor.
    boolean
    Replace the given advisor.
    void
    setExposeProxy(boolean exposeProxy)
    Set whether the proxy should be exposed by the AOP framework as a ThreadLocal for retrieval via the AopContext class.
    void
    setPreFiltered(boolean preFiltered)
    Set whether this proxy configuration is pre-filtered so that it only contains applicable advisors (matching this proxy's target class).
    void
    Change the TargetSource used by this Advised object.
    As toString() will normally be delegated to the target, this returns the equivalent for the AOP proxy.

    从接口继承的方法 infra.aop.TargetClassAware

    getTargetClass
  • 方法详细资料

    • isFrozen

      boolean isFrozen()
      Return whether the Advised configuration is frozen, in which case no advice changes can be made.
    • isProxyTargetClass

      boolean isProxyTargetClass()
      Are we proxying the full target class instead of specified interfaces?
    • getProxiedInterfaces

      Class<?>[] getProxiedInterfaces()
      Return the interfaces proxied by the AOP proxy.

      Will not include the target class, which may also be proxied.

    • isInterfaceProxied

      boolean isInterfaceProxied(Class<?> intf)
      Determine whether the given interface is proxied.
      参数:
      intf - the interface to check
    • setTargetSource

      void setTargetSource(TargetSource targetSource)
      Change the TargetSource used by this Advised object.

      Only works if the configuration isn't frozen.

      参数:
      targetSource - new TargetSource to use
    • getTargetSource

      TargetSource getTargetSource()
      Return the TargetSource used by this Advised object.
    • setExposeProxy

      void setExposeProxy(boolean exposeProxy)
      Set whether the proxy should be exposed by the AOP framework as a ThreadLocal for retrieval via the AopContext class.

      It can be necessary to expose the proxy if an advised object needs to invoke a method on itself with advice applied. Otherwise, if an advised object invokes a method on this, no advice will be applied.

      Default is false, for optimal performance.

    • isExposeProxy

      boolean isExposeProxy()
      Return whether the factory should expose the proxy as a ThreadLocal.

      It can be necessary to expose the proxy if an advised object needs to invoke a method on itself with advice applied. Otherwise, if an advised object invokes a method on this, no advice will be applied.

      Getting the proxy is analogous to an EJB calling getEJBObject().

      另请参阅:
    • setPreFiltered

      void setPreFiltered(boolean preFiltered)
      Set whether this proxy configuration is pre-filtered so that it only contains applicable advisors (matching this proxy's target class).

      Default is "false". Set this to "true" if the advisors have been pre-filtered already, meaning that the ClassFilter check can be skipped when building the actual advisor chain for proxy invocations.

      另请参阅:
    • isPreFiltered

      boolean isPreFiltered()
      Return whether this proxy configuration is pre-filtered so that it only contains applicable advisors (matching this proxy's target class).
    • getAdvisors

      Advisor[] getAdvisors()
      Return the advisors applying to this proxy.
      返回:
      an array of Advisors applying to this proxy (never null)
    • getAdvisorCount

      int getAdvisorCount()
      Return the number of advisors applying to this proxy.

      The default implementation delegates to getAdvisors().length.

    • addAdvisor

      void addAdvisor(Advisor advisor) throws AopConfigException
      Add an advisor at the end of the advisor chain.

      The Advisor may be an IntroductionAdvisor, in which new interfaces will be available when a proxy is next obtained from the relevant factory.

      参数:
      advisor - the advisor to add to the end of the chain
      抛出:
      AopConfigException - in case of invalid advice
    • addAdvisor

      void addAdvisor(int pos, Advisor advisor) throws AopConfigException
      Add an Advisor at the specified position in the chain.
      参数:
      advisor - the advisor to add at the specified position in the chain
      pos - position in chain (0 is head). Must be valid.
      抛出:
      AopConfigException - in case of invalid advice
    • removeAdvisor

      boolean removeAdvisor(Advisor advisor)
      Remove the given advisor.
      参数:
      advisor - the advisor to remove
      返回:
      true if the advisor was removed; false if the advisor was not found and hence could not be removed
    • removeAdvisor

      void removeAdvisor(int index) throws AopConfigException
      Remove the advisor at the given index.
      参数:
      index - the index of advisor to remove
      抛出:
      AopConfigException - if the index is invalid
    • indexOf

      int indexOf(Advisor advisor)
      Return the index (from 0) of the given advisor, or -1 if no such advisor applies to this proxy.

      The return value of this method can be used to index into the advisors array.

      参数:
      advisor - the advisor to search for
      返回:
      index from 0 of this advisor, or -1 if there's no such advisor
    • replaceAdvisor

      boolean replaceAdvisor(Advisor a, Advisor b) throws AopConfigException
      Replace the given advisor.

      Note: If the advisor is an IntroductionAdvisor and the replacement is not or implements different interfaces, the proxy will need to be re-obtained or the old interfaces won't be supported and the new interface won't be implemented.

      参数:
      a - the advisor to replace
      b - the advisor to replace it with
      返回:
      whether it was replaced. If the advisor wasn't found in the list of advisors, this method returns false and does nothing.
      抛出:
      AopConfigException - in case of invalid advice
    • addAdvice

      void addAdvice(Advice advice) throws AopConfigException
      Add the given AOP Alliance advice to the tail of the advice (interceptor) chain.

      This will be wrapped in a DefaultPointcutAdvisor with a pointcut that always applies, and returned from the getAdvisors() method in this wrapped form.

      Note that the given advice will apply to all invocations on the proxy, even to the toString() method! Use appropriate advice implementations or specify appropriate pointcuts to apply to a narrower set of methods.

      参数:
      advice - the advice to add to the tail of the chain
      抛出:
      AopConfigException - in case of invalid advice
      另请参阅:
    • addAdvice

      void addAdvice(int pos, Advice advice) throws AopConfigException
      Add the given AOP Alliance Advice at the specified position in the advice chain.

      This will be wrapped in a DefaultPointcutAdvisor with a pointcut that always applies, and returned from the getAdvisors() method in this wrapped form.

      Note: The given advice will apply to all invocations on the proxy, even to the toString() method! Use appropriate advice implementations or specify appropriate pointcuts to apply to a narrower set of methods.

      参数:
      pos - index from 0 (head)
      advice - the advice to add at the specified position in the advice chain
      抛出:
      AopConfigException - in case of invalid advice
    • removeAdvice

      boolean removeAdvice(Advice advice)
      Remove the Advisor containing the given advice.
      参数:
      advice - the advice to remove
      返回:
      true of the advice was found and removed; false if there was no such advice
    • indexOf

      int indexOf(Advice advice)
      Return the index (from 0) of the given AOP Alliance Advice, or -1 if no such advice is an advice for this proxy.

      The return value of this method can be used to index into the advisors array.

      参数:
      advice - the AOP Alliance advice to search for
      返回:
      index from 0 of this advice, or -1 if there's no such advice
    • toProxyConfigString

      String toProxyConfigString()
      As toString() will normally be delegated to the target, this returns the equivalent for the AOP proxy.
      返回:
      a string description of the proxy configuration