運行一個SpringBoot多模塊應用java
使用SpringBoot配置啓動:spring
Use classpath of module選中要運行的模塊api
VM options:內部配置參數springboot
-Dserver.port=8080 -Dspring.profiles.active=test -Ddebug
server.port能夠設置端口號,spring.profiles.active=test能夠設置運行環境intellij-idea
-Ddebug 開啓debug模式eclipse
這種方式的好處就是不用對代碼進行任何變更,比較方便。jvm
使用maven啓動:socket
不一樣版本的spring-boot-maven-plugin的jvm參數配置有所不一樣,同時與經過main方法啓動springboot程序傳遞參數也有所不一樣。jsp
在運行main方法時,能夠經過java -jar 後面經過添加-D的參數便可傳遞,好比:maven
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=30306,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=5005</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.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
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
http://xinklabi.iteye.com/blog/837435