使用JoinPoint获取:Spring AOP提供使用org.aspectj.lang.JoinPoint类型获取连接点数据,任何通知方法的第一个参数都可以是JoinPoint(环绕通知是ProceedingJoinPoint,JoinPoint子类),当然第一个参数位置也可以是JoinPoint.StaticPart类型,这个只返回连接点的静态部分。
AOP配置:
<bean id="logAdvice" class="javacommon.log.LogAdvice"></bean>
<aop:config proxy-target-class="true">
<aop:aspect ref="logAdvice">
<aop:before method="busiLog" pointcut="execution(* com..*Dao.*(..))" />
<aop:before method="busiLog" pointcut="execution(* javacommon.base.*Dao.*(..))" />
<aop:after-throwing throwing="ex" method="afterThrowing" pointcut="execution(* *(..))" />
</aop:aspect>
</aop:config>
通知类:
public class LogAdvice{
public void busiLog(JoinPoint jp) throws Throwable {
System.out.println("====================================");
System.out.println(jp.getSignature().getName());
}
public void afterThrowing(JoinPoint jp, Exception ex){
System.out.println("----------------抛异常了………………");
}
}
当被代理类没有接口时,我们必须使用cglib代理,否则会出现类型转换异常等一堆错误:
<aop:config proxy-target-class="true">