spring framework jar包IntelliJIDEA中SpringBoot对RunDebugConfiguration。。。
运⾏⼀个SpringBoot多模块应⽤
使⽤SpringBoot配置启动:
Use classpath of module选中要运⾏的模块
VM options:内部配置参数
-Dserver.port=8080 -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 -ableSNIExtension=false -Xmx1200m -XX:MaxPermSize=256M  -agentlib:jdwp=transport=dt_socket,server=y,address=30306,suspend=n -jar mac-quickstart-2.0.jar -l⽂件配置:
<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=5005</jvmArguments>
</configuration>
</plugin>
</plugins>
</build>
此时运⾏spring-boot:run,是可以正常传递参数。但此时通过mvn spring-boot:run命令来传递参数,参数值将会⽆效。
同样,即使项⽬中pom⽂件配置了上⾯的plugin,直接通过main⽅法启动,此参数也是不会⽣效的。打包部署时依旧需要在执⾏命令中添加参数项。
这种⽅式要改动⽂件,对于提交⽐较⿇烦,不太喜欢。
idea中对springboot进⾏热部署
1.SpringLoaded
使⽤l修改
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.6.RELEASE</version>
</dependency>
</dependencies>
</plugin>
或者添加vm参数:
-javaagent:D:\maven\repository\org\springframework\springloaded\1.2.6.RELEASE\springloaded-1.2.6.RELEASE.jar -noverify
我⽐较喜欢添加vm参数的⽅式
这种⽅式系统会监视classes⽂件,当有classes⽂件被改动时,系统会重新加载类⽂件,不⽤重启启动服务。
2.使⽤spring-boot-devtools
<!-- 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.
⽐较好的⽂章:
参考:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。