java~通(tong)過springloaded實現熱部署
之前寫(xie)過使用自定義(yi)的classLoader進行動(dong)態加載,熱(re)部署(shu);它(ta)有(you)很多弊端,我總(zong)結一下(xia):
- 當前項目不能引用第三方包
- 當前項目必須使用反射的方式調用第三方包的方法
- 寫死的一些路徑
springloaded
源碼:
功能:實現java項目的依賴包(bao)的熱(re)更新(xin)
研(yan)究(jiu)了(le)一天,終于研(yan)究(jiu)出了(le)成功了(le),國內也(ye)有不少這方(fang)面(mian)的文章,但也(ye)有一些坑,所以我總結(jie)一下:
- 源項目 a-start-hot-deploy
- 依賴項目 a-start-hot-dependency
- 工具 springloaded 1.2.5 ()
實現方式
a-start-hot-dependency里有一個類
public class HelloImpl implements Hello {
@Override
public String password() {
return "hello 牛";
}
}
添加項目依賴
<dependency>
<groupId>com.lind</groupId>
<artifactId>a-start-hot-dependency</artifactId>
<version>1.0.0</version>
</dependency>
依賴也里方法調用
@GetMapping("auto")
public ResponseEntity auto() {
return ResponseEntity.ok(new HelloImpl().password());
}
部署方式
- 復制三個包到發布的目錄springloaded-1.2.5.RELEASE.jar,a-start-hot-deploy-1.0.0.jar,a-start-hot-dependency-1.0.0.jar
- 使用java命令進行部署
java -noverify -javaagent:D:/springloaded-1.2.5.RELEASE.jar -Dspringloaded="watchJars=a-start-hot-dependency-1.0.0.jar" -jar a-start-hot-deploy-1.0.0.jar - 當前a-start-hot-dependency-1.0.0.ja有更新時,可以看到控制臺的變化

看了(le)很多文章(zhang),寫的命令都有問題,最后(hou)還是機緣巧合的成功(gong)了(le)!
