SpringAOP面向切面编程

假设场景:

接口:

实现类:

实习类实现接口的方法实现加减乘除功能:

假如此时需要在加减乘除中加入"日志功能",可以显示对应的信息

使用普通方法实现:

此时需要在实现类的每一个方法中添加对应的非核心代码,代码出现重复,冗余.

这样写在需要给方法添加功能时非常麻烦

我们可以创建一个类,这个类将实现类中重复的方法提取出来,最后再将提取出来的方法插入到对应的类中.

代理的好处,便于后续的维护

举例:房东与中介与租客三者的关系

房客调中介,再通过中介调房东,中介帮助处理非核心业务(公有的重复的方法),房东处理核心业务(自己的方法),从而实现功能

静态代理:

目标类

代理类:

main方法:

动态代理:

JDK动态代理:

JDK代理和CGlib不做了解.

可以发现上面两种代理很麻烦,所以采用AOP代理来简化操作.

面向切面编程思维:

使用注解的方式实现AOP

1.在配置文件通过下面配置开启支持aspectJ注解(二选一)

2.在配置类中则是添加@EnableAspectJAutoProxy注解(二选一)

运行结果:

        

在AOP的IOC中存储的都是代理对象

通过jointPoint获取方法各种属性值

接收返回的结果

接收报错的异常

总结:

切点表达式语法:

切点表达式的复用

上面的方式不太简洁,我们可以创建一个存储切点的类,单独存储切点表达式

首先创建这个类,同时一定要将他交给IOC进行管理

然后在切点表达式中引用

环绕通知:(需要再方法中国自定义方法的执行)

切面的优先级设置

通过@order属性进行控制

优先级最高的先执行,前置最前执行,后置最后执行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值