Spring Boot热部署之springloader

热部署是什么呢?

热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。

在平时编写代码的时候,你会发现我们只是简单把打印信息改变了,就需要重新部署,如果是这样的编码方式,那么我们估计一天下来就真的是打几个Hello World就下班了。那么就需要而部署来解决我们这种问题,那就是springloaded

使用方式,在上一个项目中的pom.xml中添加依赖:

<!-- 构建节点 -->
    <build>
        <plugins>
            <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.4.RELEASE</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                        <configuration>
                            <classifier>exec</classifier>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

第一种方式

然后选中项目去maven build 
这里写图片描述

填写spring-boot:run

这里写图片描述

让它跑起来,如果是第一次运行可能回下载很多jar包 耐心等待。 
这里写图片描述

运行如下图:

这里写图片描述
我们不重启服务器在controller里面修改返回值然后执行也可以得到,这就是所谓的热部署。 
这里写图片描述

ps:然而这种部署有一种坏处就是,当我们关闭服务器,在重启时就会出现端口占用,那是因为进程并没有kill,所以我们要到任务管理器去找到java.exe把它结束进程,才可以使用。一般不推荐使用。

第二种方式

如果使用的run as – java application的话,那么还需要做一些处理哦:

把spring-loader-1.2.4.RELEASE.jar下载下来,放到项目的lib目录中, 
这里写图片描述 
然后把IDEA的run参数里VM参数设置为:

-javaagent:.\lib\springloaded-1.2.4.RELEASE.jar -noverify

这里写图片描述
效果如上,当比上面好的多。

然后启动就可以了,这样在run as的时候,也能进行热部署了。 
当然并不是所有的代码都支持热部署了。而且我们今天只能修改返回值,如果修改方法或是类和配置文件呢? 下次更新!!!

posted @ 2018-08-02 10:54  人丑没钱嘴不甜  阅读(1219)  评论(1编辑  收藏  举报