SrpingBoot 热启动与热部署

2019-09-09 05:32:55

代码热部署


当我们已经启动了一个服务,然后修改代码之后,会自动重新部署。Spring项目通常有新内容修改后需要重新编译然后运行。通过配置Spring boot的热启动配置,可以实现自动编译重启项目,通常要比手动停止,启动项目快。


1、引入spring-boot-devtools

pom中添加响应的jar包及插件


    <!-- 热启动,热部署依赖包 -->

            <dependency>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-devtools</artifactId>

                <optional>true</optional>

            </dependency>

1

2

3

4

5

6

2、引入对应的插件


<!-- 热启动,热部署依赖插件 -->

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

                <configuration>

                    <fork>true</fork>

                </configuration>

            </plugin>

1

2

3

4

5

6

7

8

通过上面的2步,就可以实现代码的热部署了。

IDEA中 修改代码后需要通过 Ctrl+F9 重新编译


原理介绍


    spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。

    原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,

    更快指的不是节省出来的手工操作的时间。

1

2

3

其深层原理是:


    使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),

    另一个ClassLoader加载会更改的类,称为 restart ClassLoader,

    这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,

    重新创建一个restart ClassLoader,由于需要加载的类相比较少,

    所以实现了较快的重启时间(5秒以内)。

1

2

3

4

5

部署方式:

热部署 :在服务器运行时重新部署项目,直接重新加载整个应用,更多是在生产环境使用

热加载:在运行时重新加载class,更多是在开发环境使用


热部署



                <dependencies>

                    <dependency>

                        <groupId>org.springframework</groupId>

                        <artifactId>springloaded</artifactId>

                        <version>1.2.8.RELEASE</version>

                    </dependency>

                </dependencies>

1

2

3

4

5

6

7

mvn spring-boot:run


以上是spring boot 热部署的方式之一。

还有2种方式,一种是通过下载springbootloaded jar包,在vm中启动

另外一种 比较复杂可以通过加参数完成启动。


  1. 然后使用快捷键“Ctrl+Shift+A”,搜索“Registry”,如图所示。

    IntelliJ IDEA怎么热启动springboot项目

  2. 然后把如图所示的key进行勾选就可以了,如图所示。

    IntelliJ IDEA怎么热启动springboot项目



  • 2019-05-14 16:47:27

    数据库整理碎片

    最后还是用的ALTER TABLE来修改的,不知道为什么有时候管用,有时候不管用。

  • 2019-05-17 16:27:26

    在vue项目里面使用引入公共方法

    今天早上来到公司,没事看了一下别人的博客,然后试了一下,发现的确是可以的,在此记录一下,方便自己日后查阅。 首先新建一个文件夹:commonFunction ,然后在里面建立 一个文件common.js

  • 2019-05-18 12:37:39

    Android夜间模式的实现方案

    对于一款阅读类的软件,夜间模式是不可缺少的。最初看到这个需求时候觉得无从下手,没有一点头绪。后来通过查阅资料发现Android官方在Support Library 23.2.0中已经加入了夜间主题。也就是只需要通过更换主题便可实现日间模式和夜间模式的切换。下面截取项目实现的夜间模式效果图:

  • 2019-05-18 12:38:41

    android 快速实现夜间模式

    最近项目中遇到了一个问题,夜间模式在8.0以上的手机中不起作用,查看了一下原因,是夜间模式实现方法的问题。分两种情况介绍一下

  • 2019-05-18 12:40:35

    Android夜间模式的几种实现

    通过增加一层遮光罩来实现。效果不是很理想,但是好用,毕竟很多手机都有自己的夜间模式了

  • 2019-05-19 02:25:15

    php使用TCPDF生成PDF文件教程

    orientation属性用来设置文档打印格式是“Portrait”还是“Landscape”。 Landscape为横式打印,Portrait为纵向打印

  • 2019-05-21 11:46:05

    RecyclerView 加动画的坑

    然后加到recyclerView上,我是在adapter上加的。Adapter的holder复用相信大家也都很熟悉了,这个在绘制效率的提高上很重要,也很容易发现一个问题,就是内容混乱的复用。所以常见的处理就是对view加上tag来多次判断,对于visibility之类的设置一定是if...else的写法,光有if是不可以的。

  • 2019-05-21 11:54:10

    Android中如何设置字体大小

    首先要强调一点,某些用户可能存在视力障碍甚至几近失明,他们无法顺利阅读一般尺寸下的文字内容。Android操作系统意识到了这些情况,并提供了一套显示辅助功能,使得用户可以根据自己的使用习惯随意缩放设备中文本字体的大小。 要在设备上修改字体设定,首先启用“设定”应用,然后选择“显示”项下的“字体尺寸”。用户可以在设备预置的四种文本字体尺寸中选择适合自己的方案(包含小、正常、大、超大),详见图一。

  • 2019-05-21 12:34:38

    浅谈Recycleview嵌套卡顿 以及你所不知道的解决方案

    由于项目需要,需要做到recycleview 这里先不讲如何用其他控件代替这种嵌套的方式 先假定你已经嵌套了 老板还不给时间给你给布局方式 那么这个时候你的这个嵌套列表 必定是卡顿的 只要超过一屏,展示效果会有卡顿现象,原因就是由于两个RecyclerView的存在,使得滑动的view滑出当前屏幕的释放存在冲突