美文网首页
聊聊java反射机制

聊聊java反射机制

作者: 意浅离殇 | 来源:发表于2017-10-15 20:54 被阅读0次

相信做开发的程序猿们都体验过修改一次代码就要重启一次的滋味吧简直不要太爽,也比较影响工作效率,本来热部署准备后面介绍的但是为了方便就先讲了把。本文主要介绍两种方法配置热部署,下面请听细细道来。

一springloaded plugin

第一种方式通过springloaded plugin 插件的方式 在pom.xml 中添加如下节点

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <dependencies>
            <!-- springload 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>

添加完成后使用spring-boot:run的方式启动如下图。


这里写图片描述

便可以启动项目但是测试一下热部署 发现可以 具体可以下载我的代码下来实验 接下来把项目关闭再次启动发现出问题了端口占用,通过这种方式配置的热部署 用spring-boot:run 的启动方式运行工程, 关闭时不会关闭后台进程。通过第二种方式启动将springloaded-1.2.4.RELEASE.jar下载下来放到任意文件夹 文件夹下 然后将eclipce run VM参数参数设置为-javaagent:H:\m2\repository\org\springframework\springloaded\1.2.4.RELEASE\springloaded-1.2.4.RELEASE.jar -noverify 这样通过run as 启动时也能热部署


这里写图片描述
关闭后端口是可以关闭的没有出现上一种方法的问题但是测试的时候又发现了一个问题 修改一个方法的时候能够生效,但是添加一个方法的时候就没有效果了这个就尴尬了下面介绍第二种方法。

二spring-boot- devtools

将上述的插件注视掉 在pom.xml中添加依赖

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

添加相应的插件

<plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <fork>true</fork>
        </configuration>
    </plugin>

启动项目测试 :
1重新启动端口是否能被关闭
2修改一个方法能否热部署
3添加一个方法能否热部署
4添加一个类能否热部署
5修改配置文件能否热部署
发现都是成功的。由此热部署便配置好了
其原理是使用了两个classLoader ,一个是Classloader加载那些不会改变的类如第三方jar ,另一个ClassLoader加载那些会改变的类成为restart ClassLoader ,这样有代码更改的时候原来的,restart ClassLoader 在创建一个新的restart ClassLoader 加载的类相对较少所以启动比较快,便达到热部署的效果。
文章地址 http://www.haha174.top/article/details/252133
项目源码 https://github.com/haha174/boot.git

相关文章

  • 聊聊java反射机制

    相信做开发的程序猿们都体验过修改一次代码就要重启一次的滋味吧简直不要太爽,也比较影响工作效率,本来热部署准备后面介...

  • Java反射机制入门

    Java反射机制入门 一、什么是反射 JAVA反射机制(The JAVA reflection mechanism...

  • 反射之一

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • 反射之二

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • Java基础之反射

    Java基础之—反射(非常重要)Java中反射机制详解Java进阶之reflection(反射机制)——反射概念与...

  • 反射之三

    总结内容源自以下文章 粗浅看java反射机制 反射机制应用实践 谈谈java反射机制 Java Reflectio...

  • java反射机制

    java的反射机制 1 JAVA的反射机制是什么?反射机制能做什么?反射机制的优点与缺点2 认识 Class...

  • Java中反射的用途

    Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框...

  • Chapter 13 . 反射机制

    阅读原文 Chapter 13 . 反射机制 13.1 Java反射机制研究及应用 Java Reflection...

  • 详解Java反射机制(Reflection)

    详解Java反射机制(Reflection) 反射机制的作用 JAVA反射机制是在运行状态中,对于任意一个类,都能...

网友评论

      本文标题:聊聊java反射机制

      本文链接:https://www.haomeiwen.com/subject/mgthuxtx.html