Spring:通知(Advice)

通知的分类:

前置通知(MethodBeforeAdvice)、后置通知(AfterReturningAdvice)、环绕通知(MethodInterceptor)、异常通知(ThrowsAdvice)


我们先定义一个接口:ISomeInterface

public interface ISomeInterface {

String doFirst();

void doSecond();

}

我们再定义接口的实现类SomeService:

public class SomeService implements ISomeInterface {

@Override

public String doFirst() {

System.out.println("执行doFirst方法!!!");

return "aynu";

}

@Override

public void doSecond() {

System.out.println("执行doSecond方法!!!");

}

}


一、前置通知:

Spring:通知(Advice)

前置通知类

Spring:通知(Advice)

容器配置

Spring:通知(Advice)

测试类

Spring:通知(Advice)

结果


二、后置通知:

Spring:通知(Advice)

后置通知

Spring:通知(Advice)

结果


三、环绕通知:

Spring:通知(Advice)

环绕通知

Spring:通知(Advice)

结果


四、异常通知:

Spring:通知(Advice)

异常通知

其实实现这个接口刚打开时里面是没有任何方法的,那这个方法我们可以打开源码,发现里面定义了这样几个方法

Spring:通知(Advice)

我们选用其中一个,把其复制粘贴过来就行。

五、异常通知的典型应用:

异常通知里可以放异常类,执行相应的异常信息。

Spring:通知(Advice)

异常类

Spring:通知(Advice)

用户名错误异常

Spring:通知(Advice)

密码错误异常

接口:boolean chekUser(String username,String password) throws UserException;

Spring:通知(Advice)

接口实现类

Spring:通知(Advice)

异常通知类

异常通知类前两个里面放的相应的异常类,如果有相应的异常则执行,异常不属于这两类则执行第三个异常信息。

Spring:通知(Advice)

结果


六、为目标方法织入多个切面:

Spring:通知(Advice)

因为interceptorNames是一个数组。


七、使用CGLB动态代理:

我们知道JDK的Proxy用于有接口的,而CGLB用于没接口的,如果我们的项目没有接口,系统默认(自动)使用CGLB动态代理,如果我们有接口,可以通过以下设置使用CGLB动态代理(在工厂里):

Spring:通知(Advice)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值