标签:形式 entity schema style imp ati scan component 注意
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
使用@Componet注解需要扫描器。
<context:component-scan base-package="org.ghl.aop"/>
//给予注解实现aop //加此注解后此类是通知 @Aspect public class LogAspectAnnotation { //添加注解使得方法变成前置通知方法 @Before("execution(public * addStudent(..))") //属性:定义切点 public void logBeforeAnno(){ System.out.println("注解形式【前置通知】..."); } //注解实现后置通知 @AfterReturning("execution(public * addStudent(..))") //属性:定义切点 public void logAfterAnno(){ System.out.println("注解形式【后置通知】..."); } }
注意:扫描器会将指定包中的@Componet, @Service, @Respository, @Controller 修饰的类产生的对象添加到xml中。
//注解实现后置通知 @AfterReturning(pointcut = "execution(public * org.ghl.service.impl.StudentServiceImpl.addStudent(..))",returning = "returningValue") //属性:定义切点 public void logAfterAnno(JoinPoint jp,Object returningValue){ System.out.println("注解形式【后置通知】...:目标对象:"+jp.getTarget()+",方法名:"+jp.getSignature().getName()+",参数列表:"+ Arrays.toString(jp.getArgs())+",返回值:"+returningValue); }
*若报错:IllegalArgumentException: 参数异常。
*注解形式异常通知,若想捕获指定的异常,则用第二个参数e
//异常通知,若想捕获指定的异常,则用第二个参数 @AfterThrowing(value = "execution(public * org.ghl.service.impl.StudentServiceImpl.addStudent(..))",throwing = "e") public void logExceptionAnno(JoinPoint jp,NullPointerException e){ System.out.println("《注解形式【异常通知】》:e:"+e.getMessage()); }
<!--基于Schema形式的aop实现--> <bean id="logSchema" class="org.ghl.aop.LogSchema"> </bean> <aop:config> <!--配置切入点(在哪里执行通知)--> <!--=====连接线的另一方======--> <aop:pointcut expression="execution(public * org.ghl.service.impl.StudentServiceImpl.addStudent(org.ghl.entity.Student))" id="pcSchema"></aop:pointcut> <!--advisor相当于连接切入点和切面的线--> <!--=======连接线=======--> <!-- <aop:advisor advice-ref="logSchema" pointcut-ref="pcSchema"/>--> <!--Schema形式--> <aop:aspect ref="logSchema"> <!--连接线--> <aop:before method="before" pointcut-ref="pcSchema"/> <aop:after-returning method="afterReturning" pointcut-ref="pcSchema" returning="returnValue"/> <aop:after-throwing method="whenException" throwing="e" pointcut-ref="pcSchema"/> <aop:around method="around" pointcut-ref="pcSchema"/> </aop:aspect> </aop:config>
Spring4——基于注解形式的aop实现、基于Schema形式的aop实现
标签:形式 entity schema style imp ati scan component 注意
原文地址:https://www.cnblogs.com/ghlz/p/13181928.html