热部署01

热部署

为什么引入热部署:

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

在pom.xml文件添加依赖包:
<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>

这种方式有两种启动方式:

  • 使用spring-boot:run

  • 如果使用的run as – java application的话,那么还需要做一些处理。

    把spring-loader-1.2.4.RELEASE.jar下载下来,放到项目的lib目录中,然后把IDEA的run参数里VM参数设置为:

    -javaagent:.\lib\springloaded-1.2.4.RELEASE.jar -noverify

    然后启动就可以了,这样在run as的时候,也能进行热部署

问题的提出:

通过使用springloaded进行热部署,但是有些代码修改了(如新加一个方法),并不会进行热部署。

引入spring-boot-devtools

•spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。

•其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为 restart ClassLoader

•,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)。

添加依赖包: 
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
           <scope>true</scope>
</dependency>	

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

修改后,ctrl+f9

出现问题:

参考文章

Error:java: Cannot run program "E:/java_workstation/jdk8_64/bin/java" (in directory "C:\Users\FQK\.IntelliJIdea2019.3\system\compile-server"): CreateProcess error=2, 系统找不到指定的文件。

原因是,重置C盘后,java jdk位置改变了,idea项目中还是原来的位置。

点击project Structure

打开后点击SDK,将复制来的jdk安装路径复制到JDK home path处,自此问题得到解决。

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.springframework.cglib.core.ReflectUtils (file:/E:/Maven/maven-repository/org/springframework/spring-core/5.2.10.RELEASE/spring-core-5.2.10.RELEASE.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of org.springframework.cglib.core.ReflectUtils
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2020-11-08 16:09:42.973 ERROR 11464 --- [nio-8089-exec-2] o.a.c.c.C.[Tomcat].[localhost]           : Exception Processing ErrorPage[errorCode=0, location=/error]

org.apache.catalina.connector.ClientAbortException: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。
	at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:309) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
	at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:272) ~[tomcat-embed-core-9.0.39.jar:9.0.39]

猜测原因是本机tomcat没装好,配置完环境变量后, 在tomcat目录\bin目录中 ,运行命令行 ,输入 service.bat install ,稍候提示 the service “tomcat8” has been installed

E:\Maven\tomcat7\apache-tomcat-7.0.103\bin> service.bat install
Installing the service 'Tomcat7' ...
Using CATALINA_HOME:    "E:\Maven\tomcat7\apache-tomcat-7.0.103"
Using CATALINA_BASE:    "E:\Maven\tomcat7\apache-tomcat-7.0.103"
Using JAVA_HOME:        "E:\Workstation\java_workstation\jdk8_64"
Using JRE_HOME:         "E:\Workstation\java_workstation\jdk8_64\jre"
Using JVM:              "E:\Workstation\java_workstation\jdk8_64\jre\bin\server\jvm.dll"
The service 'Tomcat7' has been installed.

Tomcat8安装及配置步骤

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在IntelliJ IDEA中实现热部署,可以按照以下步骤进行操作: 1. 首先,确保你已经安装了Tomcat服务器,并在项目中配置了Tomcat服务器。 2. 在IntelliJ IDEA的顶部菜单栏中,选择“Run”(运行)> “Edit Configurations”(编辑配置)。 3. 在左侧的配置面板中,选择你的项目,并点击“+”按钮来创建一个新的配置。 4. 在弹出窗口中,选择“Tomcat Server”(Tomcat服务器)作为配置类型,并为该配置指定一个名称。 5. 在“Server”(服务器)选项卡中,选择你已经配置好的Tomcat服务器,并设置相应的端口号和应用上下文路径。 6. 在“Deployment”(部署)选项卡中,点击“+”按钮来添加你的项目。 7. 在弹出窗口中,选择“Artifact”(构件)并选择你的项目构建生成的war文件。 8. 点击“OK”按钮来保存配置。 现在,你可以尝试对代码做一些修改,并保存文件。IntelliJ IDEA会自动将修改后的代码重新编译并部署到Tomcat服务器上,实现热部署。你可以在浏览器中刷新页面来查看修改的效果。 注意:确保你的项目已经开启了自动编译功能,可以在IntelliJ IDEA的顶部菜单栏中选择“Build”(构建)> “Build Project”(构建项目)来手动触发编译。同时,确保Tomcat服务器已经启动并处于运行状态。引用<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [intellij idea tomcat热部署配置教程](https://download.csdn.net/download/weixin_38522529/12757376)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Idea配置热部署的详细教程](https://download.csdn.net/download/weixin_38554193/12723427)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Java自学视频教程-JavaSE基础-配套资料-day01-课程介绍、Java概述、IDEA、Java基础语法.rar](https://download.csdn.net/download/weixin_54787054/88246644)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值