26Java细节知识点总结

事物

    1. a方法调用b方法,a方法上面有@transition注解,b方法没有注解,b方法报错,抛出异常,a方法吃掉了异常,a方法不会回滚;a方法没有吃掉,a方法回滚。
    1. a方法里面调用b方法,两个方法上面有@transaction注解,调用方式用this.b()进行调用,那么b方法代理不会被触发,b方法走的还是原来的方法,这个时候a和b共用一个事物,逻辑和1一样
    1. a方法里面调用b方法,两个方法上面有@transaction注解,传播级别是默认的required,b方法抛出异常,a方法就算吃掉了,最后也会回滚,因为a和b公用一个事物,b方法抛出异常的时候给公共事务打上了rollback标记,a事物最后提交的时候会报错
    1. a方法@transaction注解隔离级别是required,b事物的@transaction注解隔离级别是requires_new,b方法抛出异常,a吃掉异常,a可以正常提交,因为a和b事物独立,b只会标记自己的异常,不会污染到a。

代理模式

  • jdk动态代理

    A 是接口,B 实现 A,JDK 动态代理中,B是目标对象,JDK 动态代理生成全新的代理类 ,这个代理类实现接口 A ,不继承 B ,代理对象实现了 A 接口,内部持有 B 对象的引用。

    JDK 动态代理:实现接口,不会重写目标类方法 ,是在InvocationHandler#invoke里面拦截调用

  • cglib

    例如E类没有接口,代理会创建一个子类继承 E 类,目标类 E 没有接口时,CGLIB 会动态生成一个 E 的子类,子类继承 E,并重写 E 里面的非 final 方法,在重写的方法里嵌入增强逻辑。

相关推荐
Cc.Y4 小时前
Java零基础入门:字符串深度掌握——从基础API到StringBuilder性能优化
java·开发语言·性能优化
shuoshuohaohao8 小时前
MyBatis 小知识点
java·spring·mybatis
海上小飞龙8 小时前
【KMP算法-下篇】同一道题:Java 库函数 2600 微秒,手写 KMP 16 微秒
java·开发语言·算法
谢亮_vipxieliang9 小时前
泛型擦除、通配符与 PECS 一次讲透
java·面试
八解毒剂10 小时前
【计组】中央处理器CPU
java·开发语言·计算机组成原理
打工仔折腾 AI10 小时前
工业场景下时序库与实时计算一体化架构选型实践对比
java·开发语言·后端·python·性能优化·架构·ai agent 实战
ZealSinger11 小时前
Java虚拟线程上线后瓶颈转移到哪看三层
java·开发语言·firefox
2601_9611332811 小时前
盘立方软件指标文华期货公式下载
java
蜗牛互联网11 小时前
长任务多Agent共享文件系统的Manifest交接模式
java·人工智能·后端
Sirens.11 小时前
Java并发锁详解:六类锁策略与 synchronized 底层原理
java·前端·算法