实际上,我正在一个 Spring MVC 项目中工作,并且我在项目中成功应用和配置了 Spring AOP,但我想将 Spring AOP 应用于各个方法,例如我想检查哪个方法是否有效。
这是我的方面代码:
@Pointcut("execution(* com.xyz.dao..*.*(..))")
public void generalPointCut() {
}
@Before("generalPointCut()")
public void logBefore(JoinPoint joinpoint) {
Object clazz = joinpoint.getTarget().getClass().getName();
String methodName = joinpoint.getSignature().getName();
log.info("Entring in Method" + methodName + " in Calss " + clazz);
}
最佳答案
(评论后跟进)
您可以在切入点执行表达式中达到您想要的精确度。例如,如果您想在方法名称(包括返回类型和参数签名)方面非常具体,那么它看起来像这样:
@Pointcut("execution(public String com.xyz.dao.findMyEntity(Long))")
<小时/>
Take a look at the execution pointcut expression examples in the Spring Documetation .
您已经通过使用 *
作为通配符来拦截 com.xyz.dao
包和子包中的所有方法/类。
正如您将在示例中看到的,您可以深入到方法名称级别。
关于java - 如何在各个方法中应用 Spring AOP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45649067/