Spring Boot 在IntelliJ社区中调试Sping Boot 3

qc6wkl3g  于 2023-03-02  发布在  Spring
关注(0)|答案(1)|浏览(164)

自从迁移到Spring Boot 3之后,当我运行Maven Spring Boot目标mvn spring-boot:run时,我的应用程序不再保持在断点。
这是因为Spring会分叉线程或进程,而调试器并没有连接到它。
在以前的Spring-Boot版本中,您可以通过传递-Dspring-boot.run.fork=false(参见How to debug spring-boot application with IntelliJ IDEA community Edition?)来禁用分叉。
不幸的是,此选项已被删除,因为您可以在Spring Boot 3.0 Migration Guide
Spring Boot 2.7中弃用的spring-boot:run和spring-boot:start的fork属性已被删除。
是否有可能使断点再次工作?
□目前为止的想法
1.当然IntelliJ Ultimate有更好的Spring Boot集成。我正尝试让它与社区版一起工作。
1.我也尝试不运行Maven目标,而是做一个应用程序运行配置。到目前为止,由于java.lang.ClassNotFoundException,它没有找到主类。不确定我是否应该进一步调查该选项。
1.最后一个想法是使用调试选项启动Maven目标,这样外部调试器可以连接,但这也不起作用,即使可以,我也只能在启动后连接调试器,使用将使调试Spring上下文的创建变得不可能。

h79rfbju

h79rfbju1#

我终于找到了至少一个变通办法。可能不是在所有情况下都很理想。
我用JUnit执行了一个@SpringBootTest,然后测试方法只休眠一小时,这样Spring上下文就会出现并停留在那里进行调试。如果我让Spring绑定到一个定义的端口,我甚至可以调用REST端点。

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
class TemplateApplicationTests {

    @Test
    void contextLoads() throws InterruptedException {
        Thread.sleep(360000);
    }
}

相关问题