SpringBoot的热布署和多环境配置(四)

简介: 本文主要讲解:1. 开发热布署2. 多环境配置
二八佳人体似酥,腰间仗剑斩愚夫。虽然不见人头落,暗里教君骨髓枯。

上一章简单介绍了SpringBoot的yml配置文件(三),如果没有看过,请观看上一章

一. SpringBoot的热布署

在开发当中,如果我们的代码发生了改变,我们想让其生效,那么就需要重新启动服务,这样会浪费太多的时间。 我们希望不重启服务,当代码发生了改变,即使是微小的改变,也可以被检测到,这种方式就叫做热布署。SpringBoot很好的提供了这一支持。

老蝴蝶接下来,就验证一下 SpringBoot热布署操作。

一.一 通过maven创建 DevTools项目

老蝴蝶采用Maven的方式创建了 DevTools项目,用于验证热布署。

添加了一个 HelloController的响应类,进行响应字符串信息。 pom.xml 依赖,还是以前的那些依赖。

application.yml 配置信息是:

server:
  port: 8027
  servlet:
    context-path: /Yue

在这里插入图片描述

一.二 无热布署时的操作

输入网址: http://localhost:8027/Yue/ 可以正常的响应数据。
在这里插入图片描述

这个时候,如果我们想改变 toHello()方法里面的响应信息,变成 "我是两个蝴蝶飞" 。

在这里插入图片描述

刷新浏览器,发现浏览器的响应信息依旧没有发生改变。
在这里插入图片描述

只有当我们重新启动服务器之后,刷新,才可以看到改变后的信息。

在这里插入图片描述

这是没有热布署的情况下,方法里面代码发生了一点点改变,也必须要重启服务器。

一.三 SpringBoot实现热布署操作

为了避免 Idea对热布署产生影响,我们需要先对Idea进行配置,允许Idea进行静态编译和动态编译。

一.三.一 Idea开启静态自动编译

File--->Settings--->Build,Execution,Deployment--->Compiler--->勾选 Build project automatically

在这里插入图片描述

一.三.二 Idea开启动态自动编译

按住快捷键 Ctrl+Shift+Alt+/ ,选中 Registry

在这里插入图片描述

会进入到

在这里插入图片描述

从这里面找到

compiler.automake.allow.when.app.running 和 compiler.document.save.enabled 选项 (按照字典顺序进行查询,老蝴蝶以前设置过,所以在最前面),进行勾选, 点击关闭,再次打开,就会发生已经勾选了。

在这里插入图片描述

一.三.三 pom.xml 中添加 devtools 热布署依赖

 <!--导入自动热布署的依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

在这里插入图片描述

重启项目之后,先验证一下以前的 url可以正常的访问响应。
在这里插入图片描述

一.三.四 修改代码,进行验证

将输出信息改成 “我是两个蝴蝶飞,我突然不开心了”

在这里插入图片描述

会发现,控制台会自动重启了

在这里插入图片描述

刷新浏览器,会发生改变

在这里插入图片描述

一.三.五 自动热布署并不是万能的

刚才,我们只是简单的修改方法内的代码,我们在实际开发中,除了修改方法内的代码,还常常创建新的方法和创建类文件。

这个时候,看看会是什么效果?

一.三.五.一 创建新方法

添加一个新方法 helloWorld()

在这里插入图片描述

控制台并没有重启

访问地址: http://localhost:8027/Yue/helloWorld

会发现,

在这里插入图片描述

报错了。

我们可以将其与 Idea 进行整合使用, Idea 使用 ctrl+F9会自动编译

在这里插入图片描述

点击 Yes ,刷新浏览器,可以发现,能够生效了。

在这里插入图片描述

一.三.五.二 创建新类

创建一个新的 InfoController 类,看看效果。

在这里插入图片描述

控制台并没有重新启动

在这里插入图片描述

需要 搭配 Ctrl+F9 一块使用,才可以。
在这里插入图片描述

自动热部署 ,生产环境时应该被禁用,打包时,也不会包含此 devtools.

在这里插入图片描述

二. SpringBoot的多环境配置

在我们实际开发中,常常会有多种环境, 开发环境,测试环境,预生产环境,生产环境,这些环境的配置是不相同的(数据库信息一定不同)。 以前只有一个配置文件,不同的环境进行转换时,需要将配置文件进行替换,这样很不方便。 如果能够在一个总的配置文件里面,指定这次运行加载的配置文件就好了, 或者能在环境运行时,指定就更好了。 SpringBoot提供了这种支持,叫做多环境转换。

老蝴蝶这儿用 开发,测试,生产 三个环境进行演示,环境的区别,只用简单的端口号和项目路径进行表示。

以前的 application.yml 配置文件信息是这样:

在这里插入图片描述

常见的有三种配置方式。

二.一 多个配置文件,主配置文件进行指定

二.一.一 创建多个配置文件信息

在这里插入图片描述

application.yml 是主配置文件信息, application-dev.yml 是开发环境的配置。

application-test 是测试环境的配置, application-proc 是生产环境的配置。

注意,新添加的配置文件的命名,一定要是 application-xxx.yml

二.一.二 为不同的配置文件设置不同的配置信息

二.二.二.一 开发环境 dev 配置

server:
  port: 8081
  servlet:
    context-path: /Yue1

二.二.二.二 测试环境 test 配置

server:
  port: 8082
  servlet:
    context-path: /Yue2

二.二.二.三 生产环境 proc配置

server:
  port: 8083
  servlet:
    context-path: /Yue3

二.二.二.四 主环境配置

用 spring.profiles.active 属性指定使用哪一个配置文件。

# 将以前的配置去除
#server:
#  port: 8027
#  servlet:
#    context-path: /Yue
spring:
  profiles:
    active: dev   # 指定要使用哪一个环境

此时,使用的是开发环境。

二.一.三 测试运行

控制台打印输出 :

在这里插入图片描述

发现,使用的确实是 开发环境。

将 application.yml 中的配置 spring.profiles.active 改成 test

spring:
  profiles:
    active: test   # 指定要使用哪一个环境

重新运行项目,观察控制台输出:

在这里插入图片描述

发现,变成 了 8082, /Yue2, 这些确实是 test测试环境的配置。

将 application.yml 中的配置 spring.profiles.active 改成 proc ,

spring:
  profiles:
    active: proc   # 指定要使用哪一个环境

重启项目后,观察控制台输出

在这里插入图片描述

发现,变成 了 8083, /Yue3, 这些确实是 proc生产环境的配置。

如果将 spring.profiles.active 改成 yuejl, 一个不存在的配置文件呢?

spring:
  profiles:
    active: yuejl   # 指定要使用哪一个环境

重启项目,观察控制台输出

在这里插入图片描述

会采用 8080 空 这种默认的配置。

二.二 单配置文件配置

上面配置一个环境,需要四个配置文件信息,能不能放置在一个配置环境里面呢? 改变时,只改变那些有区分的信息,如数据库连接信息,端口号和项目名这些可以相同的配置,不用改变。 yaml 配置文件,支持这种方式, 用 --- 进行分隔不同的配置文件。

二.二.一 单文件配置

application.yml 的配置文件总信息是:

# 将以前的配置去除
#server:
#  port: 8027
#  servlet:
#    context-path: /Yue
spring:
  profiles:
    active: dev   # 指定要使用哪一个环境

---
server:
  port: 8081
  servlet:
    context-path: /Yue1
spring:
  profiles: dev  # 用 spring.profiles 设置配置文件的名称,是开发环境
---
server:
  port: 8082
  servlet:
    context-path: /Yue2
spring:
  profiles: test  # 用 spring.profiles 设置配置文件的名称,是测试环境
---
server:
  port: 8083
  servlet:
    context-path: /Yue3
spring:
  profiles: proc  # 用 spring.profiles 设置配置文件的名称,是生产环境

二.二.二 测试运行

测试运行时,效果与多个配置文件的效果一样,改变 spring.profiles.active 的值的话,可以动态的改变环境的配置信息。

老蝴蝶这儿就不重复粘贴了。

二.三 运行时指定

第二种方式,需要在配置文件里面用 spring.profiles.active 进行指定。 切换不同的环境的话,也需要改变其对应的值。

能不能在 java -jar 时指定运行哪一个配置文件呢? 是可以的, SpringBoot支持这种处理。

在 java -jar Xxx.jar 时,后面添加参数 --spring.profiles.active=dev(test,proc) 这样方式。

二.三.一 application.yml配置文件里面去掉 指定文件属性

# 将以前的配置去除
#server:
#  port: 8027
#  servlet:
#    context-path: /Yue
---
server:
  port: 8081
  servlet:
    context-path: /Yue1
spring:
  profiles: dev  # 用 spring.profiles 设置配置文件的名称,是开发环境
---
server:
  port: 8082
  servlet:
    context-path: /Yue2
spring:
  profiles: test  # 用 spring.profiles 设置配置文件的名称,是测试环境
---
server:
  port: 8083
  servlet:
    context-path: /Yue3
spring:
  profiles: proc  # 用 spring.profiles 设置配置文件的名称,是生产环境

二.三.二 通过maven 进行打包运行

mvn clean install

在这里插入图片描述

运行成功之后,会生成一个 jar包

在这里插入图片描述

二.三.二.一 不指定环境

采用 java -jar 的方法进行运行, 先不指定环境

D:\githubBoot\springboot\DevTools\target>java -jar learn-1.0-SNAPSHOT.jar

在这里插入图片描述

在这里插入图片描述

默认的配置会生效。

二.三.二.二 指定为开发环境

java -jar learn-1.0-SNAPSHOT.jar --spring.profiles.active=dev

在这里插入图片描述

二.三.二.三 指定为测试环境

java -jar learn-1.0-SNAPSHOT.jar --spring.profiles.active=test

在这里插入图片描述

二.三.二.四 指定为生产环境

java -jar learn-1.0-SNAPSHOT.jar --spring.profiles.active=proc

在这里插入图片描述

二.三.二.五 指定一个不存在的环境时

java -jar learn-1.0-SNAPSHOT.jar --spring.profiles.active=yuejl

在这里插入图片描述

会走默认的。

注意, 在 java -jar 时指定运行环境的优先级最高,比直接在配置文件中指定优先级高,所以既在配置文件中指定了,又在 java -jar 时指定了,以 java -jar 时为准。

本章节的代码放置在 github 上:

https://github.com/yuejianli/springboot/tree/develop/DevTools

谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!

相关文章
|
Java 测试技术 数据库连接
SpringBoot的热布署和多环境配置(四)下
SpringBoot的热布署和多环境配置(四)
134 0
SpringBoot的热布署和多环境配置(四)下
|
Java 测试技术 数据库
SpringBoot的热布署和多环境配置(四)中
SpringBoot的热布署和多环境配置(四)
120 0
SpringBoot的热布署和多环境配置(四)中
|
Java Maven
SpringBoot的热布署和多环境配置(四)上
SpringBoot的热布署和多环境配置(四)
122 0
SpringBoot的热布署和多环境配置(四)上
|
28天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
133 1
|
2月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
140 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
2月前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
214 1
|
12天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
92 62
|
10天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
26 2
|
13天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
2月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
210 3
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
下一篇
无影云桌面