Spring Boot 第26篇: Springboot整合devtools实现热部署

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/codes_life/article/details/80046716

构架工程

创建一个springboot工程,在其pom文件加入:

<!-- 热部署 -->
<!-- devtools可以实现页面热部署(即页面修改后会立即生效,
这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现) -->
<!-- 实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。 -->
<!-- 即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),
注意:因为其采用的虚拟机机制,该项重启是很快的 -->
<!-- (1)base classloader (Base类加载器):加载不改变的Class,例如:第三方提供的jar包。 -->
<!-- (2)restart classloader(Restart类加载器):加载正在开发的Class。 -->
<!-- 为什么重启很快,因为重启的时候只是加载了在开发的Class,没有重新加载第三方的jar包。 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <!-- optional=true, 依赖不会传递, 该项目依赖devtools; 
    之后依赖boot项目的项目如果想要使用devtools, 需要重新引入 -->
    <optional>true</optional>
</dependency>

添加配置

在application.properties配置文件中加入:

#设置热部署生效
spring.devtools.restart.enabled=true
#设置重启的目录,添加那个目录的文件需要restart
spring.devtools.restart.additional-paths=src/main/java
#排除那个目录的文件不需要restart 
#spring.devtools.restart.exclude=static/**,public/**
#classpath的目录下的WEB-INF文件夹内容修改不重启
#spring.devtools.restart.exclude=WEB-INF/**

测试代码

创建用户实体:

package com.iisrun.pojo;

import java.util.Date;

public class User {

    private String name;
    private String password;
    private Integer age;
    private Date birthday;
    private String desc;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public String getDesc() {
        return desc;
    }
    public void setDesc(String desc) {
        this.desc = desc;
    }
}

创建用户controller:

package com.iisrun.controller;

import java.util.Date;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.iisrun.pojo.IMoocJSONResult;
import com.iisrun.pojo.User;

@RestController
@RequestMapping("/user")
public class UserContoller {

    @RequestMapping("/getUser")
    public User getUser() {
        User u = new User();
        u.setName("张三");
        u.setAge(18);
        u.setBirthday(new Date());
        u.setPassword("123456");
        u.setDesc("hello 张三~~");

        return u;
    }
}

测试热部署是否生效

方法一:

项目启动状态,手动修改User对象的值,保存后刷新浏览器查询热部署是否生效。

方法二:

项目启动状态,手动修改User对象的值,保存后查看控制台是否有restartedMain字样的输出。

以上代码均已测试通过。

阅读更多
换一批

没有更多推荐了,返回首页