运行一个SpringBoot多模块应用

使用SpringBoot配置启动:

Use classpath of module选中要运行的模块

VM options:内部配置参数

-Dserver.port= -Dspring.profiles.active=test -Ddebug

server.port可以设置端口号,spring.profiles.active=test可以设置运行环境

-Ddebug 开启debug模式

这种方式的好处就是不用对代码进行任何变动,比较方便。

使用maven启动:

不同版本的spring-boot-maven-plugin的jvm参数配置有所不同,同时与通过main方法启动springboot程序传递参数也有所不同。

在运行main方法时,可以通过java -jar 后面通过添加-D的参数即可传递,比如:

java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 huishi-api-implementation.jar

参考:

java -Djsse.enableSNIExtension=false -Xmx1200m -XX:MaxPermSize=256M  -agentlib:jdwp=transport=dt_socket,server=y,address=,suspend=n -jar mac-quickstart-2.0.jar -gui

pom.xml文件配置:

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=</jvmArguments>
</configuration>
</plugin>
</plugins>
</build>

此时运行spring-boot:run,是可以正常传递参数。但此时通过mvn spring-boot:run命令来传递参数,参数值将会无效。

同样,即使项目中pom文件配置了上面的plugin,直接通过main方法启动,此参数也是不会生效的。打包部署时依旧需要在执行命令中添加参数项。

这种方式要改动文件,对于提交比较麻烦,不太喜欢。

idea中对springboot进行热部署

1.SpringLoaded

使用pom.xml修改

<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2..RELEASE</version>
</dependency>
</dependencies>
</plugin>

或者添加vm参数:

-javaagent:D:\maven\repository\org\springframework\springloaded\1.2..RELEASE\springloaded-1.2..RELEASE.jar -noverify

我比较喜欢添加vm参数的方式

这种方式系统会监视classes文件,当有classes文件被改动时,系统会重新加载类文件,不用重启启动服务。

2.使用spring-boot-devtools

pom.xml中添加

<!-- ideal修改文件自动重启工具 ,eclipse不需要 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>

将依赖关系标记为可选<optional>true</optional>是一种最佳做法,可以防止使用项目将devtools传递性地应用于其他模块。

这种方式是使用自动重启

自动重启的原理在于spring boot使用两个classloader:不改变的类(如第三方jar)由base类加载器加载,正在开发的类由restart类加载器加载。应用重启时,restart类加载器被扔掉重建,而base类加载器不变,这种方法意味着应用程序重新启动通常比“冷启动”快得多,因为base类加载器已经可用并已填充。

所以,当我们开启devtools后,classpath中的文件变化会导致应用自动重启。

总之上面这两种方式都是在改动class文件的时候才会进行热部署,所以要手动进行编译或者开始idea的自动编译。

3.jrebel插件,以前还好破解,现在越来越难破解,没钱,pass.

比较好的文章:

http://tengj.top/2017/06/01/springboot10/

参考:

http://blog.hanqunfeng.com/2016/12/09/spring-boot-study/

https://blog.csdn.net/wo541075754/article/details/75017014

https://stackoverflow.com/questions/42618277/how-to-set-a-run-debug-configuration-in-intellij-idea-using-a-jar-file

https://blog.kazaff.me/2014/07/28/java%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%BF%90%E8%A1%8C%E5%8F%82%E6%95%B0/

http://xinklabi.iteye.com/blog/837435

http://jadyer.cn/2016/07/29/idea-springboot-jsp/

http://www.tianshouzhi.com/api/tutorials/jvm/99

IntelliJ IDEA 中SpringBoot对Run/Debug Configurations配置 SpringBoot热部署的更多相关文章

  1. IntelliJ IDEA中Spring Boot项目使用spring-boot-devtools无法实现热部署/热更新的问题解决

    这个设置真的和Eclipse有很大区别,Eclipse中只要运行之后就可实现修改文件自动重启.但IDEA不太一样,需要做如下配置: 前提: 1.添加spring-boot-devtools到POM. ...

  2. IDEA Run/Debug Configurations 中点击“+”号没有tomcat server选项

    环境: 版本:IntelliJ IDEA 2016.3.2系统:windows7 32位 / ubuntu上通用 2.问题: 在IDEA中,对每一个web项目都要配置tomcat服务器,如果你是第一次 ...

  3. 安卓 运行、调试 配置 android Run/debug configurations

    android  运行.调试 配置 android  Run/debug configurations 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq. ...

  4. android run/debug configurations时报错Cannot reload AVD list:

    问题:配置Android的run/debug configurations时报错Cannot reload AVD list: cvc-enumeration-valid: Value '280dpi ...

  5. Intellij IDEA 配置jrebel热部署

    Jrebel 先介绍一下jrebel,jrebel是可以热部署项目的一个工具,更改代码自动部署并不需要重启项目(在spring中的controller中,增加.修改方法都是可以进行热部署而不需要重启的 ...

  6. springboot配置idea 热部署

    背景: 在开发中,当我们修改代码之后,每次都要重新启动,很是浪费时间,在springboot中就有一种热部署方式,可以实现想要修改不需要每次都重新启动,保存即可生效 用法: 一.maven 添加   ...

  7. idea开发时springboot项目时的自动编译和热部署

    前提:最好将idea的启动器设置一下 操作:1.file > Build,Execution,Deployment > Compiler 勾选 Build project automati ...

  8. IDEA run/debug configurations中没有配置tomcat选项

    原文链接:https://blog.csdn.net/qq_41016818/article/details/80871738 原因分析 没有配置tomcat插件 解决方法如下: file->s ...

  9. 找回IntelliJ IDEA中 丢失的Run Dashboard 视图

    一般有时候创建springboot项目的时候右下角可以提示你打开Run Dashboard,但是如果不提醒就需要自己配置了. 找到项目中.idea文件下的workspace.xml开打 接下来找到 & ...

随机推荐

  1. VS2017

    Visual Studio常用快捷键https://www.cnblogs.com/DonetRen/p/8182911.htmlVisual Studio 2017 Product Family S ...

  2. 如何运行ruby代码

    第一种,ruby -e 在命令行中运行下面命令,-e的意思是,把后面的字符串当作脚本执行 ruby -e "print 'hello'" 使用irb交互控制台 在命令行输入irb ...

  3. Python 6 -- 构建一个Web应用

    用Flask Web框架,实现浏览器页面交互.在此之前需要了解web的基本工作流程,可参照https://blog.csdn.net/m0_37466453/article/details/72752 ...

  4. Lua语言总结

    [1]要退出交互模式和解释器,只需输入“os.exit()” [2]在交互模式执行程序块可以使用函数dofile,这个函数就可以立即执行一个文件.应用示例:dofile("f:/myLua/ ...

  5. Linux基础命令---ipcalc计算IP

    ipcalc        ipcalc提供了一种计算主机IP信息的简单方法.各种选项指定ipcalc应该在标准输出上显示什么信息.可以指定多个选项.必须始终指定要操作的IP地址.大多数操作还需要一个 ...

  6. 转:Image与byte之间互转

    #region<Image 与 byte之间互转> /// <summary> /// 将一个byte转换成一个Bitmap对象 /// </summary> // ...

  7. php获取字符串长度函数strlen和mb_strlen

    php获取字符串长度函数strlen和mb_strlencount() - 计算数组中的单元数目,或对象中的属性个数strlen — 获取字符串长度,一个汉字为3个字符mb_strlen() - 获取 ...

  8. Codeforce 835B - The number on the board (贪心)

    Some natural number was written on the board. Its sum of digits was not less than k. But you were di ...

  9. ASP.NET定时调用WebService 运行后台代码

    效果: 通过在网站的Global.asax的Application_Start方法中 加入定时器 定时调用WebService 该WebService的一个方法 负责在后台 向数据库的某个表加入数据 ...

  10. Pony 编程语言介绍

    Pony,一种“Rust 遇上 Erlang”的语言,让开发快捷.安全.高效.高并发的程序更简单. 在 Wallaroo Labs,我是工程副总裁,我们正在构建一个用 Pony 编程语言编写的 高性能 ...