• 阶段3 2.Spring_07.银行转账案例_10 使用动态代理实现事务控制


    回到事物的案例中

    我们现在希望用代码比较精简的这个AccountServiceImpl这个类。而不是一堆事物的AccountServiceImpl_OLD这个类

    新建BeanFactory类

    AccountService需要通过spring注入的方式。所以这里提供了set方法

    代理谁就写的类加载器。



    复制这里的代码

    复制过来,然后进行修改

    这里有很多红色报错的地方。那就是tsManager这个对象。这就需要在上面定义。
    把AccountServiceImpl_OLD中定义的tsManager和生成的set方法都复制过来



    accountService需要是一个最终的对象。所以这里用final来修饰

    这样这个代理对象就创建完了。同时也加上了事物

    这样执行AccountServiceImpl这个被代理对象里面的任何方法时,都会经过代理对象。

    被代理对象AccountServiceImpl内就不再需要tsManager。因为都由代理对象来控制了。

    完成以上。事务控制和业务层的方法就进行了真正的分离

    bean.xml的修改

    accountService中注入事务管理就不再需要了。

    配置BeanFactory

    beanfacoty中注入Service

    再注入事物管理器

    配置代理的Service

    之前的这里的accountService就是一个普通的Service对象,里面没有任何带事物支持的

    这里我们不能再配置AccountServiceImpl这个类了。而是要用我们之前对象创建三种方式之一的实例工厂,也就是factory-bean


    这样我们就出现了两个类型相同的。这两都实现了IAccountService接口,一个是动态代理实现的,一个本身就是实现类


    那么我们测试的时候,用Autowired这种方式注入就不行了。因为这个再注入的时候二选一,选不出来


    所以就需要用Qulifier。我们这里就用代理类的Service


    在这里打印一句话

    测试使用动态代码实现事务控制
    出了一场,金额都没有变化










    配置变的很繁琐。接下来就需要Spring中的AOP

  • 相关阅读:
    关于c语言变量的内存分布测试程序
    常用ARM指令集及汇编_破解
    CPU读取内存0x30000000地址4个字节数据
    打印十六进制字符串查看内存地址
    JZ2440串口打印字符作为调试
    搭建Linux3.4.2内核编辑环境
    网卡驱动程序
    同步互斥阻塞
    poll机制分析[转]
    安装、配置、启动FTP、SSH或NFS服务
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11354421.html
Copyright © 2020-2023  润新知