Spring Loaded

与spring-boot-devtools的restart不同,Spring Loaded是reload,它会监控classpath下的文件,只要发生改变,就会reload这个文件,无论是class还是资源文件。

注意点1:就是classpath路径下不能有中文,不能有空格,举个例子,在windows上D:\My Project\demo\target\classes 就是绝对错误的典范,笔者在这上面吃了很大的亏,花了很长时间才找到这个错误,路径一定要是stander一点的路径形式

注意点2:如下java文件,你不管则么修改,不管是用Spring Loaded还是JRebel都是一样的无法reload的,reload是class级别的

public class Main {
    public static void main(String[] args) {
        while (true) {
            System.out.println("test");
            Thread.sleep(1000);
        }
    }
}

改成如下,就可以了,修改System.out.println("p31" + name);或者A中的其他任何地方都没问题,都会reload

public class Main {
    static class A {
        String name = "test";
        void p() {
            System.out.println("p31" + name);
        }
    }
    public static void main(String[] args) throws InterruptedException {
        A a = new A();
        while (true) {
            a.p();
            Thread.sleep(1000);
        }
    }
}

使用Spring Loaded

非IDE模式(所有java项目)

  1. maven中心下载spring loaded的jar包,版本越新越稳定,因为早期版本reload功能bug很多,去github该项目的issue下看看就知道了 笔者当前最新是1.2.8.RELEASE

  2. 在执行java程序时,如下:

    java -javaagent:<pathTo>/springloaded-{VERSION}.jar -noverify SomeJavaClass
    

<pathTo>/springloaded-{VERSION}.jar是你存放springloaded jar的路径,如果是在windows下,要注意反斜杠 ,要写成这样-javaagent:D:\\Tools\\springloaded-1.2.8.RELEASE.jar -noverify

然后就可以爽了

maven模式(所有java项目)

  1. 下载springloaded jar
  2. 在maven所在目录的bin目录下,修改mvn.cmd或是mvn.bat或者mvn.sh之类的,就是maven得启动脚本,加上参数 MAVEN_OPTS=-javaagent:<pathTo>/springloaded-{VERSION}.jar -noverify,其实原理是一样的,就是给jvm启动时加上此vm参数
  3. 使用mvn exec:java -Dexec.mainClass="SomeJavaClass"运行

maven模式,使用spring-boot-maven-plugin(spring-boot项目)

  1. 修改pom
    <plugin>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-maven-plugin </artifactId>
     <dependencies>
         <!--在这里添加 springloader plugin -->
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>springloaded</artifactId>
             <version>1.2.8.RELEASE</version>
         </dependency>
     </dependencies>
    </plugin>
    
  2. 运行时,使用mvn spring-boot:run,就是采用spring-boot-maven-plugin的方式运行spring-boot应用

IDE模式

无论IDEA还是eclipse,打开main 的run configuration,在vm参数里加上java -javaagent:<pathTo>/springloaded-{VERSION}.jar -noverify ,一样的,万变不离其宗,IDE使用run java application方式启动其实就是,自动执行java -cp xxx SomeJavaClass,所以加上需要的vm参数就ok了

results matching ""

    No results matching ""