SpringBoot热部署——Eclipse

热部署有三种方式:

  • SpringLoader 插件
  • DevTools 工具
  • 安装JRebel插件

注意:热部署的功能依赖于工具的自动编译,Eclipse-->Build Automatically必须勾选。

一、SpringLoader

1. 以 maven 插件方式使用 SpringLoader

(1) 修改pom.xml

<build>
    <plugins>
        <!-- springloader 插件 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <dependencies>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>springloaded</artifactId>
                    <version>1.2.5.RELEASE</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

(2) 创建测试Controller

@RestController
public class TestController {
    
    @RequestMapping("/show")
    public Object showPage(){
        System.out.println("show page.....");
        ModelAndView view = new ModelAndView();
        view.setViewName("index");
        return view;
    }
}

(3) 编写测试的jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>测试页面</title>
</head>
<body>
    <h3>hello world</h3>
</body>
</html>

(4) 测试

以Maven命令启动。

右键项目-->Debug As-->Maven Build...(第二个),输入spring-boot:run

通过修改Controller的输出信息和jsp页面的输出信息,可以得出SpringLoader只对Java代码有效,对页面没有效果

注:Springloader 热部署程序是在系统后台以进程的形式来运行,需要手动关闭该进程,可能会出现端口占用的问题。

2. 在项目中直接使用 jar 包的方式使用 SpringLoader

(1) 下载SpringLoader的jar包添加到类路径下

(2)  右键-->Debug As -->Debug Configurations...

二、DevTools 工具

DevTools的使用比较简单,只需要修改项目的pom文件添加devtools 的依赖即可。

<!-- DevTools 的坐标 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>
SpringLoader 与 DevTools 的区别: 
  • SpringLoader 在部署项目时使用的是热部署的方式。 
  • DevTools 在部署项目时使用的是重新部署的方式。

三、安装JRebel插件

有了DevTools,为什么还要使用JRebel插件呢?

  • 额外引入的依赖实际上生产环境并不需要,开发者引入后容易误提交到线上。
  • springboot-devtools方式的热部署在功能上有限制。如在方法内的修改可以实现热部署,但是新增的方法或者修改方法参数之后热部署是不生效的。
  • 相对于JRebel,springboot-devtools方式热部署的速度可能有点慢

在Eclipse Marketplace...中搜索JRebel进行安装,需要激活,具体怎么使用,请自行搜索。

posted @ 2019-09-15 19:34  codedot  阅读(1114)  评论(0编辑  收藏  举报