我正在研究当我们自动装配任何接口时 spring 提供的代理对象。这是了解https://www.youtube.com/watch?v=bEvGdWjeCy4&t=310s的一个很好的链接. 在这里他解释说,如果 POJO 实现了任何接口,那么 Spring 代理 bean 也实现了该接口(使用 JDK 代理机制)并添加额外的逻辑,例如事务逻辑(如果该方法使用 jdbc 代码注释或委托给 PlatformTransactionManager)。Spring 为我们提供了一个包装器对象,该对象具有对真实对象的引用,并且它具有在使用 MethodInvocationHandler 调用原始方法之前和之后运行的附加代码。所以我的问题是spring是如何管理该事务的。获取连接和启动事务的jdbc代码是在哪里编写的。它是在 Spring Proxy 对象中还是在任何 Aspect Class 中。
就像在 AOP 中一样,Aspects 基本上是横切关注点,例如整个应用程序共有的事务。Spring 是在代理对象中插入事务行为代码还是使用 PlatformTransactionManager 来执行此操作以及此 AOP 适合此流程的位置。如果是,如何在此处调用 Aspect 处理事务行为。呼叫是如何转移到它的?