org.springframework.aop.Advisor类的使用及代码示例

x33g5p2x  于2022-01-16 转载在 其他  
字(8.1k)|赞(0)|评价(0)|浏览(121)

本文整理了Java中org.springframework.aop.Advisor类的一些代码示例,展示了Advisor类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Advisor类的具体详情如下:
包路径:org.springframework.aop.Advisor
类名称:Advisor

Advisor介绍

[英]Base interface holding AOP advice (action to take at a joinpoint) and a filter determining the applicability of the advice (such as a pointcut). This interface is not for use by Spring users, but to allow for commonality in support for different types of advice.

Spring AOP is based around around advice delivered via method interception, compliant with the AOP Alliance interception API. The Advisor interface allows support for different types of advice, such as before and after advice, which need not be implemented using interception.
[中]包含AOP建议(在连接点采取的操作)和确定建议适用性的过滤器(如切入点)的基本接口。此界面不供Spring用户使用,而是为了支持不同类型的建议而提供通用性。
SpringAOP基于通过方法拦截提供的建议,符合AOP联盟拦截API。Advisor接口允许支持不同类型的建议,例如前建议和后建议,这些建议不需要使用拦截来实现。

代码示例

代码示例来源:origin: spring-projects/spring-framework

private boolean hasAspectName(Advisor anAdvisor) {
  return (anAdvisor instanceof AspectJPrecedenceInformation ||
      anAdvisor.getAdvice() instanceof AspectJPrecedenceInformation);
}

代码示例来源:origin: spring-projects/spring-framework

private boolean equalsAdviceClasses(Advisor a, Advisor b) {
  return (a.getAdvice().getClass() == b.getAdvice().getClass());
}

代码示例来源:origin: spring-projects/spring-framework

/**
 * Is the given advice included in any advisor within this proxy configuration?
 * @param advice the advice to check inclusion of
 * @return whether this advice instance is included
 */
public boolean adviceIncluded(@Nullable Advice advice) {
  if (advice != null) {
    for (Advisor advisor : this.advisors) {
      if (advisor.getAdvice() == advice) {
        return true;
      }
    }
  }
  return false;
}

代码示例来源:origin: spring-projects/spring-framework

/**
 * Return the AspectJPrecedenceInformation provided by this advisor or its advice.
 * If neither the advisor nor the advice have precedence information, this method
 * will return {@code null}.
 */
@Nullable
public static AspectJPrecedenceInformation getAspectJPrecedenceInformationFor(Advisor anAdvisor) {
  if (anAdvisor instanceof AspectJPrecedenceInformation) {
    return (AspectJPrecedenceInformation) anAdvisor;
  }
  Advice advice = anAdvisor.getAdvice();
  if (advice instanceof AspectJPrecedenceInformation) {
    return (AspectJPrecedenceInformation) advice;
  }
  return null;
}

代码示例来源:origin: spring-projects/spring-framework

@Override
public int indexOf(Advice advice) {
  Assert.notNull(advice, "Advice must not be null");
  for (int i = 0; i < this.advisors.size(); i++) {
    Advisor advisor = this.advisors.get(i);
    if (advisor.getAdvice() == advice) {
      return i;
    }
  }
  return -1;
}

代码示例来源:origin: spring-projects/spring-framework

/**
 * Count advices of the given class.
 * @param adviceClass the advice class to check
 * @return the count of the interceptors of this class or subclasses
 */
public int countAdvicesOfType(@Nullable Class<?> adviceClass) {
  int count = 0;
  if (adviceClass != null) {
    for (Advisor advisor : this.advisors) {
      if (adviceClass.isInstance(advisor.getAdvice())) {
        count++;
      }
    }
  }
  return count;
}

代码示例来源:origin: spring-projects/spring-framework

@Override
public MethodInterceptor getInterceptor(Advisor advisor) {
  MethodBeforeAdvice advice = (MethodBeforeAdvice) advisor.getAdvice();
  return new MethodBeforeAdviceInterceptor(advice);
}

代码示例来源:origin: spring-projects/spring-framework

@Override
public MethodInterceptor getInterceptor(Advisor advisor) {
  AfterReturningAdvice advice = (AfterReturningAdvice) advisor.getAdvice();
  return new AfterReturningAdviceInterceptor(advice);
}

代码示例来源:origin: spring-projects/spring-framework

/**
 * Determine whether the given Advisor contains an AspectJ advice.
 * @param advisor the Advisor to check
 */
private static boolean isAspectJAdvice(Advisor advisor) {
  return (advisor instanceof InstantiationModelAwarePointcutAdvisor ||
      advisor.getAdvice() instanceof AbstractAspectJAdvice ||
      (advisor instanceof PointcutAdvisor &&
          ((PointcutAdvisor) advisor).getPointcut() instanceof AspectJExpressionPointcut));
}

代码示例来源:origin: spring-projects/spring-framework

@Override
public MethodInterceptor getInterceptor(Advisor advisor) {
  return new ThrowsAdviceInterceptor(advisor.getAdvice());
}

代码示例来源:origin: spring-projects/spring-framework

@Override
public MethodInterceptor[] getInterceptors(Advisor advisor) throws UnknownAdviceTypeException {
  List<MethodInterceptor> interceptors = new ArrayList<>(3);
  Advice advice = advisor.getAdvice();
  if (advice instanceof MethodInterceptor) {
    interceptors.add((MethodInterceptor) advice);
  }
  for (AdvisorAdapter adapter : this.adapters) {
    if (adapter.supportsAdvice(advice)) {
      interceptors.add(adapter.getInterceptor(advisor));
    }
  }
  if (interceptors.isEmpty()) {
    throw new UnknownAdviceTypeException(advisor.getAdvice());
  }
  return interceptors.toArray(new MethodInterceptor[0]);
}

代码示例来源:origin: spring-projects/spring-framework

/**
 * Return {@code true} if the advisor is a form of before advice.
 */
public static boolean isBeforeAdvice(Advisor anAdvisor) {
  AspectJPrecedenceInformation precedenceInfo = getAspectJPrecedenceInformationFor(anAdvisor);
  if (precedenceInfo != null) {
    return precedenceInfo.isBeforeAdvice();
  }
  return (anAdvisor.getAdvice() instanceof BeforeAdvice);
}

代码示例来源:origin: spring-projects/spring-framework

@Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    Advice advice = this.advisor.getAdvice();
    sb.append(ClassUtils.getShortName(advice.getClass()));
    sb.append(": ");
    if (this.advisor instanceof Ordered) {
      sb.append("order ").append(((Ordered) this.advisor).getOrder()).append(", ");
    }
    if (advice instanceof AbstractAspectJAdvice) {
      AbstractAspectJAdvice ajAdvice = (AbstractAspectJAdvice) advice;
      sb.append(ajAdvice.getAspectName());
      sb.append(", declaration order ");
      sb.append(ajAdvice.getDeclarationOrder());
    }
    return sb.toString();
  }
}

代码示例来源:origin: spring-projects/spring-framework

/**
 * Return {@code true} if the advisor is a form of after advice.
 */
public static boolean isAfterAdvice(Advisor anAdvisor) {
  AspectJPrecedenceInformation precedenceInfo = getAspectJPrecedenceInformationFor(anAdvisor);
  if (precedenceInfo != null) {
    return precedenceInfo.isAfterAdvice();
  }
  return (anAdvisor.getAdvice() instanceof AfterAdvice);
}

代码示例来源:origin: spring-projects/spring-framework

private SimpleBeforeAdviceImpl getAdviceImpl(ITestBean tb) {
  Advised advised = (Advised) tb;
  Advisor advisor = advised.getAdvisors()[0];
  return (SimpleBeforeAdviceImpl) advisor.getAdvice();
}

代码示例来源:origin: spring-projects/spring-framework

@Override
public MethodInterceptor getInterceptor(Advisor advisor) {
  SimpleBeforeAdvice advice = (SimpleBeforeAdvice) advisor.getAdvice();
  return new SimpleBeforeAdviceInterceptor(advice) ;
}

代码示例来源:origin: spring-projects/spring-framework

@Override
  public int hashCode() {
    int hashCode = 0;
    Advisor[] advisors = this.advised.getAdvisors();
    for (Advisor advisor : advisors) {
      Advice advice = advisor.getAdvice();
      hashCode = 13 * hashCode + advice.getClass().hashCode();
    }
    hashCode = 13 * hashCode + (this.advised.isFrozen() ? 1 : 0);
    hashCode = 13 * hashCode + (this.advised.isExposeProxy() ? 1 : 0);
    hashCode = 13 * hashCode + (this.advised.isOptimize() ? 1 : 0);
    hashCode = 13 * hashCode + (this.advised.isOpaque() ? 1 : 0);
    return hashCode;
  }
}

代码示例来源:origin: liuyangming/ByteTCC

for (int i = 0; i < advisors.length; i++) {
  Advisor advisor = advisors[i];
  Advice advice = advisor.getAdvice();
  if (org.springframework.aop.aspectj.AspectJAroundAdvice.class.isInstance(advice)) {

代码示例来源:origin: spring-projects/spring-framework

@Test
public void testChainedDecorators() throws Exception {
  ITestBean bean = (ITestBean) this.beanFactory.getBean("chainedTestBean");
  assertTestBean(bean);
  assertTrue(AopUtils.isAopProxy(bean));
  Advisor[] advisors = ((Advised) bean).getAdvisors();
  assertEquals("Incorrect number of advisors", 2, advisors.length);
  assertEquals("Incorrect advice class", DebugInterceptor.class, advisors[0].getAdvice().getClass());
  assertEquals("Incorrect advice class", NopInterceptor.class, advisors[1].getAdvice().getClass());
}

代码示例来源:origin: spring-projects/spring-batch

PlatformTransactionManager getTransactionManagerSetOnJobRepository(JobRepository jobRepository) throws Exception {
  TargetSource targetSource = ((Advised) jobRepository).getTargetSource(); // proxy created in SimpleBatchConfiguration.createLazyProxy
  Advised target = (Advised) targetSource.getTarget(); // initial proxy created in AbstractJobRepositoryFactoryBean.initializeProxy
  Advisor[] advisors = target.getAdvisors();
  for (Advisor advisor : advisors) {
    if (advisor.getAdvice() instanceof TransactionInterceptor) {
      TransactionInterceptor transactionInterceptor = (TransactionInterceptor) advisor.getAdvice();
      return transactionInterceptor.getTransactionManager();
    }
  }
  return null;
}

相关文章

微信公众号

最新文章

更多

Advisor类方法