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 方法,在重写的方法里嵌入增强逻辑。

相关推荐
泡茶喝茶写代码12 分钟前
A股量化策略回测实战:从行情数据到绩效评估(第 13 篇):放量突破策略
java·python·股票数据api·股票数据api接口·股票量化数据api·股票量化数据接口
文丑颜不良啊16 分钟前
LeetCode626~650题目解析
java·leetcode
tianbin91142 分钟前
批处理与微调辅助场景:Claude 中转并发、链路缓存与压测对比
java·开发语言·缓存
frjc1 小时前
Spring AI 里 ChatClient 和 ChatModel 有什么区别?什么时候该用哪个?
java·开发语言·spring·ai
Wang's Blog1 小时前
Java 项目实战: 交友项目 - 圈子功能的表设计方案
java·开发语言·交友
文丑颜不良啊1 小时前
LeetCode601~625题目解析
java·leetcode
文丑颜不良啊1 小时前
LeetCode651~675题目解析
java·leetcode
frjc1 小时前
Spring WebFlux SSE 长连接,可以替换为 Java 21 虚拟线程吗?
java·人工智能·spring·ai·ai编程
知守观2 小时前
从 4 套 PDF 库的混战,聊聊老项目的依赖管理与“静默失败”
java·后端·设计模式