Spring Boot Devtools示例

时间:2016-05-23 17:26:02

标签: java spring-boot

根据Spring Boot Devtools docs,devtools不会以“生产模式”运行;也就是说,如果您使用java -jar ..,执行Spring Boot应用程序,那么它将不会使用devtools的内置JVM魔法。但是,Spring Boot starter docs只显示运行Spring Boot应用程序的一种方式......通过java -jar...

首先,我想知道:如何在非生产模式下运行我的Spring Boot应用程序?我知道您可以使用Spring Boot CLI运行您的应用程序(例如spring run) ,但这是唯一的方法吗?

此外,相同的devtools文档提到您可以使用一些excludeDevtools选项从生产二进制文件中显式删除devtools jar,但它们从不解释在何处/如何使用它。这里有任何例子/想法吗?

2 个答案:

答案 0 :(得分:8)

1)在非生产模式(即不是来自JAR)中运行Spring Boot应用程序的一个示例来自IDE(更具体地说是Eclipse或IntelliJ),您可以从main方法启动应用程序,或者使用Spring Boot发布支持。这是Dev Tools最实际的用途,因为它允许在不重新启动的情况下持续观察应用程序中的更改。

2)excludeDevTools是Spring Boot Maven插件http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/maven-plugin/repackage-mojo.html或Gradle插件的选项 - 请参阅http://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-gradle-plugin.html#build-tool-plugins-gradle-repackage-configuration

所以在你的情况下它会是 bootRepackage { mainClass = 'demo.Application' excludeDevtools = true }

答案 1 :(得分:1)

从Spring启动开始,devtools使开发更容易。 Spring引导使用嵌入式servlet容器(tomcat,underow,jetty),即使在非生产环境中也可以使用生产就绪代码。

关于如何在非生产环境中运行Spring-boot应用程序的问题,我们可以通过右键单击 - >直接从Spring工具套件IDE运行应用程序。如果是本地环境,则以Spring引导运行。

如果使用的构建工具是maven,那么从命令提示符mvn boot:run,如果它是gradle,则在命令提示符中从项目位置的根文件夹gradle bootRun。如果您将应用程序打包为超级jar,那么Java -jar ..,如果您的环境是Linux,则可以从一个进程开始。

关于忽略生产环境中的devtools,如果我们将Spring-boot-devtools指定为构建工具(maven,gradle)的依赖项中的可选范围,则Spring启动会智能地忽略devtools jar。在gradle中,Spring引导gradle插件负责忽略最终部署的jar或war的devtools

更新:: 调试使用Gradle运行的Spring Boot应用程序,如http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-remote-debug-gradle-run596

所示

将其添加到build.gradle文件中:

applicationDefaultJvmArgs = [

" -agentlib:JDWP =运输= dt_socket,服务器= Y,暂停= Y,地址= 5005" ]

在IntelliJ Idea IDE或STS中,设置新的Debug配置,然后在选项中选择" Remote"。默认值应该没问题,但要注意端口号和传输类型(" socket")。玩得开心!