xml形式:
<!--注册bean-->
<bean id="userService" class="banana.demo.UserServiceImpl"/>
<bean id="xmlAdvice" class="banana.demo.XmlAdvice"/>
<!--配置Aop-->
<aop:config>
<!--配置切点-->
<aop:pointcut id="pointcut" expression="execution(* banana.demo.UserServiceImpl.*(..))"/>
<!--配置切面-->
<aop:aspect ref="xmlAdvice">
<!--前置通知-->
<aop:after method="after" pointcut-ref="pointcut"/>
<!--后置通知-->
<aop:before method="before" pointcut-ref="pointcut"/>
<!--环绕通知-->
<aop:around method="around" pointcut-ref="pointcut"/>
<!--异常通知-->
<aop:after-throwing method="exception" pointcut-ref="pointcut"/>
<!--返回通知-->
<aop:after-returning method="returning" pointcut-ref="pointcut"/>
</aop:aspect>
</aop:config>
注解形式:
@Aspect//指定切面类
public class AnnoAdvice {
//指定切点
@Pointcut("execution(* banana.demo.UserServiceImpl.*(..))")
public void AnnoAdvice() {
}
@Before("AnnoAdvice()")
public void before(){
System.out.println("前置");
}
@After("AnnoAdvice()")
public void after(){
System.out.println("后置");
}
@AfterReturning("AnnoAdvice()")
public void returning(){
System.out.println("返回通知");
}
@AfterThrowing("AnnoAdvice()")
public void exception(){
System.out.println("异常");
}
@Around("AnnoAdvice()")
public Object around(ProceedingJoinPoint point) throws Throwable {
System.out.println("环绕前");
Object result = point.proceed();
System.out.println("环绕后");
return result;
}
}