zoukankan      html  css  js  c++  java
  • 3,Spring Boot热部署

    问题的提出:

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

    一,使用方式一(不建议使用-springloaded

    1)在pom.xml文件添加依赖包:

    <build>
        <plugins>
            <!-- 在这里添加springloader plugin-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin </artifactId>
                <dependencies>
                    <!--springloaded hot deploy -->
                    <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>

    2)点击项目单击右键Run as -->Maven build 在弹出的窗口中的Goals添加:spring-boot:run,点击Run运行

    3)浏览器访问getDatePersion方法:

    修改getDatePersion方法,访问:

    该方式在控制台结束后并不会释放8080端口,再次启动会报错(8080端口被占用):

    二,使用方式二-springloaded

    使用的run as – java application,需要做一些处理:

    1,把spring-loader-1.2.4.RELEASE.jar下载下来,放到项目的lib(这个目录不固定)目录中

    2,把IDEA的run参数里VM参数设置为:-javaagent:.libspringloaded-1.2.4.RELEASE.jar -noverify 然后启动就可以了,这样在run as的时候,也能进行热部署。选择启动类右键菜单Run As-->Run Configurattions…

    3,弊端:

    第二种方法结束后会自动释放8080端口,但是我们在后台代码新增加一个方法,在前台访问是无法访问到的。

    三,第三种方式,使用Spring-Boot-devtoos实现热部署(主要使用该方式

    1,简介

    spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为 restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)。

    2,在pom.xml文件中添加依赖包

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
        <scope>true</scope>
    </dependency>   

    3,在pom.xml文件中添加spring-boot-maven-plugin

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <!--fork :  如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart --
            <fork>true</fork>
        </configuration>
    </plugin>

    4,说明

    1) devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的。

    2)devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现(这里注意不同的模板配置不一样)

  • 相关阅读:
    10 个雷人的注释,就怕你不敢用!
    Java 14 之模式匹配,非常赞的一个新特性!
    poj 3661 Running(区间dp)
    LightOJ
    hdu 5540 Secrete Master Plan(水)
    hdu 5584 LCM Walk(数学推导公式,规律)
    hdu 5583 Kingdom of Black and White(模拟,技巧)
    hdu 5578 Friendship of Frog(multiset的应用)
    hdu 5586 Sum(dp+技巧)
    hdu 5585 Numbers
  • 原文地址:https://www.cnblogs.com/Zender/p/7079549.html
Copyright © 2011-2022 走看看