为什么 Java Debugger 会随机进入内部方法?
Why does Java Debugger steps into internal methods randomly?
自从我开始注意到在调试我正在处理的应用程序时,java 调试器随机进入一些 Spring 框架内部方法已经有一段时间了。
例如,当我在调用另一个服务方法的 RestController 端点方法中添加断点时,调试器进入 BeanFactoryTransactionAttributeSourceAdvisor.getPointcut() 方法。
这种行为让我很沮丧,因为避免这种情况的唯一方法是在服务方法中添加断点。
有人知道为什么会这样吗?
我正在使用 Intellij IDEA 2020.3,Java 8 和 Spring Boot 2.X 如果这有帮助。
Spring 中的一些 class 元素在方面得到增强以提供正交功能(在这种情况下:交易,这可能意味着您用 [=10 注释了您的方法或 class =]).
在 运行 时间(或编译时间),附加代码围绕您自己的代码编织以提供该功能(在 运行 设置您的代码之前开始事务,在成功完成时提交,或回滚对于(某些)例外)。
换句话说,当你的代码 运行s 时,除了你自己的代码之外,还有更多的代码,当你单步执行调试器时,IntelliJ 也会单步执行该代码并将其显示给你。
自从我开始注意到在调试我正在处理的应用程序时,java 调试器随机进入一些 Spring 框架内部方法已经有一段时间了。
例如,当我在调用另一个服务方法的 RestController 端点方法中添加断点时,调试器进入 BeanFactoryTransactionAttributeSourceAdvisor.getPointcut() 方法。
这种行为让我很沮丧,因为避免这种情况的唯一方法是在服务方法中添加断点。
有人知道为什么会这样吗?
我正在使用 Intellij IDEA 2020.3,Java 8 和 Spring Boot 2.X 如果这有帮助。
Spring 中的一些 class 元素在方面得到增强以提供正交功能(在这种情况下:交易,这可能意味着您用 [=10 注释了您的方法或 class =]).
在 运行 时间(或编译时间),附加代码围绕您自己的代码编织以提供该功能(在 运行 设置您的代码之前开始事务,在成功完成时提交,或回滚对于(某些)例外)。
换句话说,当你的代码 运行s 时,除了你自己的代码之外,还有更多的代码,当你单步执行调试器时,IntelliJ 也会单步执行该代码并将其显示给你。