0

自从我开始注意到在调试我正在处理的应用程序时,java 调试器会随机进入一些 Spring Framework 内部方法已经有一段时间了。

例如,当我在调用另一个服务方法的 RestController 端点方法中添加断点时,调试器会进入 BeanFactoryTransactionAttributeSourceAdvisor.getPointcut() 方法。

这种行为让我感到不安,因为避免这种情况的唯一方法是在服务方法中添加断点。

有谁知道为什么会这样?

如果有帮助,我正在使用 Intellij IDEA 2020.3、Java 8 和 Spring Boot 2.X。

4

1 回答 1

4

Spring 中的某些类通过方面进行了增强以提供正交功能(在这种情况下:事务,这可能意味着您使用 注释您的方法或类@Transactional)。

在运行时(或编译时),围绕您自己的代码编织附加代码以提供该功能(在运行代码之前启动事务,成功完成时提交,或回滚(某些)异常)。

换句话说,当您的代码运行时,除了您自己的代码之外,还有更多的代码,当您单步调试调试器时,IntelliJ 也会单步调试该代码并将其显示给您。

于 2021-08-11T11:53:33.137 回答