作者回复: 干得漂亮
作者回复: 是的,你提到了代理,可以把自己的实例注入进来,内部方法调用改为直接调用注入的实例。因为Spring其实是为你创建了一个代理,那我们调用代理就好了。其效果是一样的。
作者回复: 这是一种方法,还有种更简单的做法是把自己的实例注入进来,内部方法调用改为直接调用注入的实例。因为Spring其实是为你创建了一个代理,那我们调用代理就好了。
作者回复: 这……也是个办法,但不是我这个问题的本意哈
作者回复: 事务的确是AOP代理来实现的,不过你这里的A和B把我说晕了……把类的内部调用改成不同类之间的调用,其本质其实也是调用代理类的方法,所以效果是一样的。
作者回复: 你说的这些如果是做Java后端的话,迟早都是要接触到的,个人觉得无所谓先后,建议先广泛地涉猎这些知识,并不一定要很精通,但要知道了解,一旦遇到了问题,要能在第一时间想到在哪里能找到相关的材料,能快速拎起来。
作者回复: 你好,这个部分的确以应用为主一些,后续的章节有些地方会做展开,考虑到大部分同学的情况,不会在课程中就每个点都去展开,还请理解。相信你提了这个问题,那应该也能从我在课程中说道的Spring的事务其实是通过AOP实现的这句中理解事务的原理,对吧:-)
作者回复: 在类上加@Transacational注解,则类里的public方法都会带上事务。而且属性都是用同一个。
作者回复: 只要能取得代理对象,执行代理的方法就行。
作者回复: 你没写并不代表没有,Spring Boot给我们做了自动配置
作者回复: Redis不算RDBMS,算NoSQL,MySQL和Redis本来就没有自动的事务关联,你只能手写,在MySQL回滚时自己清理Redis。哪怕是两个MySQL,也没有很好的分布式事务实现,JTA这种性能不是很理想,基本都是要靠自己实现,关于分布式事务可以了解下BASE和TCC的概念。
作者回复: 在答疑的课程中会简单说明的,这里大家解决的思路都大同小异。
作者回复: 额,这里就是想演示一下不带注解的方法内部调用带注解的方法的情况……
作者回复: SpringBoot有很多自动配置的,已经把proxyTargetClass给你设置为true了