Spring学习笔记7,基于AOP使用声明式事务控制

什么是AOPAOP是Spring提供的关键特性之一。AOP即面向切面编程,是OOP编程的有效补充。使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统。从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑——比如权限管理,事物管理,日志记录等等。这些系统性的编程工作都可以独立编码实现,然后通过AOP技术切入进系统即可。从而达到了 将不同的关注点分离出来...
摘要由CSDN通过智能技术生成

什么是AOP

AOP是Spring提供的关键特性之一。AOP即面向切面编程,是OOP编程的有效补充。使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统。从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑——比如权限管理,事物管理,日志记录等等。这些系统性的编程工作都可以独立编码实现,然后通过AOP技术切入进系统即可。从而达到了 将不同的关注点分离出来的效果。

AOP原理

aop面向切面编程的原理就是代理:
1、静态代理
采用一些工具类对原来的类生成一个代理类,代理类以.class存在。
AspectJ实现的AOP,他是将切面代码直接编译到Java类文件中。

2、动态代理(重点,spring基于动态代理实现aop)
在运行中,通过反射生成类的代理对象,在代理对象中对原来的对象进行增强。

spring采用动态代理的技术包括:

1、基于接口生成代理对象
根据接口方法生成代理对象,对原来的代理对象进行增强
使用jdk提供反射实现

2、基于生成代理对象
根据类生成一个子类(代理对象),在代理对象(子类)中对父类进行增强。
使用CGLib实现

通过运行代理的测试代码了解通过代理对原来对象进行增强的过程
  • 4.2.1编写原始类
public interface CustomerServiceAop {
    public void insertCustomer(CstCustomer cstCustomer,CstCustomerDetail cstCustomerDetail) ;
}
  • 4.2.2编写代理对象生成代码(了解)
    代理对象要对上边的CustomerServiceAop进行增强!!

    由于CustomerServiceAop是一个接口,使用jdk提供根据接口生成代理对象.
    生成代理,测试跟踪:
    这里写图片描述基于jdk的代理(根据接口生成代理对象)

public class TransactionManagerHandler  implements InvocationHandler {
   
    //目标对象,原始对象CustomerServiceAop
    private Object target;
    //通过构造方法设置目标对象
    public TransactionManagerHandler(Object target){
        this.target = target;
    }

    //proxy生成的代理对象
    //method目标对象方法的引用
    //args目标对象方法调用的参数
    @Override
    public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwab
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值