Spring中的AOP

什么是AOP

 AOP的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程)。它是面向对象编程(OOP)的一种补充。AOP思想随之产生。AOP采取横向抽取机制,将分散在各个方法中的重复代码提取出来,然后在程序编译或运行时,再将这些提取出来的代码应用到需要执行的地方。

AOP的JDK动态代理:主要是解决实现了接口的类

个人觉得分为三块:

切面Myspect()类,JDK动态代理类jdkproxy(),对象(通俗来讲对象委托代理去做事情);

JDK动态代理类jdkproxy():注意需要实现JDK中的InvocationHandler接口

并且创建代理方法:

然后将切面写入jdkproxy代理类中:

 

那么在主要业务中调用代理如何调用如下图:

 

 

CGLIB代理:实现没有接口的类做代理

首先代理类实现接口如下:

为对象创建代理的方法如下:

捕获代理对象的要做的事情:

 在主函数为对象创建代理和JDK动态代理一样

 


ProxyFactoryBean

 ProxyFactoryBean是FactoryBean接口的实现类,FactoryBean负责实例化一个Bean,而ProxyFactoryBean负责为其他Bean创建代理实例。在Spring中,使用ProxyFactoryBean是创建AOP代理的基本方式。

 

切面类实现MethodInterceptor接口:

配置文件如下(更加方便对以上两个的使用):

 

 

基于XML的声明式AspectJ:

基于XML的声明式AspectJ是指通过XML文件来定义切面、切入点及通知,所有的切面、切入点和通知都必须定义在<aop:config>元素内;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值