【问题标题】:Best way to develop with Spring Boot + IntelliJ使用 Spring Boot + IntelliJ 进行开发的最佳方式
【发布时间】:2015-03-07 00:28:01
【问题描述】:

我们有一个构建在 Spring Boot 之上的产品,并通过嵌入式 Tomcat 通过可执行战争进行部署,但在开发过程中,我们采用了在托管 Tomcat 上开发的方法,因此我们的 IDE(主要是 IntelliJ)将具有热插拔/重新部署支持(而不是循环我们的整个应用程序,这需要一段时间才能启动)。

我们最近在我们的项目中添加了spring-boot-starter-websocket,并且在使用嵌入式 Tomcat 的资源时遇到了托管 Tomcat 的类加载器的问题,并且出现问题。我们可以通过使用配置文件并将嵌入的库标记为provided 来解决它,这样只有我们的 CI 构建包含它们,但它最容易出错和 hacky。


所以,我的问题是:有没有更好的做事方式? 使用 Maven 插件或可运行类会带来问题,因为 maven 插件不会热插拔,而可运行类有寻找 JSP 之类的类路径的问题(希望我们事先切换到 Thymeleaf,但下次;)

“更好”的开发周期的要求是:

  1. 代码热插拔 - 也就是在开发时不必重新启动应用程序/服务器(除了更改方法签名等)

  2. 良好的工具支持

  3. 简单、可重复的设置——几乎是“检查并运行”

谢谢!

【问题讨论】:

  • 你试用过spring Tool Suite吗?它非常适合 spring 应用程序,特别是 spring boot。
  • 是的,我们喜欢 STS 并且有几个人在使用它。我现在非常喜欢 IntelliJ,因为它也有非常棒的数据库工具

标签: spring tomcat intellij-idea spring-boot


【解决方案1】:

您不再需要 tomcat 来重新加载类。使用 Spring-boot 1.2,您只需调试 maven 目标 spring-boot:run 并重新加载类。 这在 intellij 中对我有用。

【讨论】:

  • 我刚刚试了一下,一切正常,但我无法设置断点/使用 IDE 进行调试。您必须手动配置调试器吗?
  • 不,我只有一个常规的 spring-boot maven 项目,其中在构建部分添加了 spring-boot 插件。然后我在调试模式下启动 spring-boot:run 目标。然后我可以在代码中设置断点。
  • @PatrickCornelissen 您在 Windows 上吗?因为在 Linux 上,可执行 gradle/maven 任务 bootRun 的 pid 存在问题。它通过 fork 创建一个子进程,当您从 IDEA 停止任务时,它确实停止了父进程,而不是子进程。所以端口仍然被它阻塞,你必须手动杀死它
  • 当你运行主类本身时,intelliJ 不使用 gradle/maven 来运行它。但即使在使用 maven/gradle 时,到目前为止,我还没有遇到旧 java 进程的任何问题,但我正在使用 Mac。我再也受不了窗户了 ;-)
猜你喜欢
  • 1970-01-01
  • 2011-06-19
  • 2015-12-14
  • 1970-01-01
  • 2020-06-12
  • 2010-12-26
  • 2021-08-31
  • 1970-01-01
  • 2020-02-19
相关资源
最近更新 更多