springboot热部署两种方式

本文深入探讨了热部署的概念及其实现方式,包括通过springloader插件和直接添加jar包的方法,并对比了DevTools的使用,详细介绍了如何在项目中实现页面和后台代码的实时更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

热部署:就是在项目不停止的情况下,完成项目的部署。因为每次我们在修改完项目后,需要重新启动该项目,才可以看到修改后的内容。热部署就是在项目不重新启动的情况下,对项目进行部署,使我们可以看到修改后的内容。

测试项目

  • pom
<properties>
  		<java.version>1.8</java.version>
  		<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
    	<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
	
<dependencies>
  			<!-- spring-boot启动器 -->
	  	<dependency>
	      <groupId>org.springframework.boot</groupId>
	      <artifactId>spring-boot-starter-web</artifactId>
	    </dependency>
				<!-- 添加thymeleaf启动器 -->
	  	<dependency>
	      <groupId>org.springframework.boot</groupId>
	      <artifactId>spring-boot-starter-thymeleaf</artifactId>
	    </dependency>
</dependencies>
  • controller
@Controller
public class DemoController {
	@RequestMapping("/show")
	public String showPage() {
		return "index";
	}
}
  • 页面,index.html
<body>
	<span th:text="hello"></span>
</body>
  • 启动类
@SpringBootApplication
public class App {
	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
}
  • 注意:这时如果修改controller代码或者页面代码,直接访问时不显示修改后的内容,需要重新启动该项目。

注意

如果想要使热部署生效,需要开启Build Automotically;

在这里插入图片描述


SpringLoader

方式一

配置maven插件进行使用。注意:要想使maven插件生效,必须使用maven命令,也就意味着项目的启动方法要发生改变。

  • 在pom文件中添加插件:
 	<!-- springloader插件 -->
<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      	      <dependencies>
      	<dependency>
      		<groupId>org.springframework</groupId>
      		<artifactId>springloaded</artifactId>
      		<version>1.2.5.RELEASE</version>
      	</dependency>
		</dependencies>
		<executions>
             <execution>
                 <goals>
                     <goal>repackage</goal>
                 </goals>
                 <configuration>
                     <classifier>exec</classifier>
                 </configuration>
             </execution>
         </executions>
    </plugin>
  </plugins>
</build>

使用maven命令启动项目:spring-boot:run
Run Asmaven buildGoals中输入命令,运行即可。

  • 缺点:

①只能对后台java代码做部署处理,但是对页面无能为力;
②这种方式启动的程序是在系统后台以进程的形式来运行,意味着在eclipse中点击停止按钮,只是将该项目关闭,不是将进程关掉,再次启动会报端口抢占错误。这时需要在任务管理器中手动关掉这个进程java.exe


方式二:

在项目中直接加入springloader的jar包进行使用。

  • 新建lib文件夹,将springloaded-1.2.5.RELEASE.jar包放入。
  • 修改启动方式:

①在启动类中右击:Run AsRun Configurations→选择Arguments视图→VM arguments添加参数:-javaagent:.\lib\springloaded-1.2.5.RELEASE.jar -noverifyrun


DevTools工具

springloader和DevTools区别:
1、 springloader在部署项目时使用的是热部署的方式;
2、DevTools在部署项目时采用重新部署的方式;

  • 添加devtools坐标
<!-- devtools坐标 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-devtools</artifactId>
	<scope>runtime</scope>
	<optional>true</optional>
</dependency>
  • 正常启动即可。

页面和后台代码都可以重新部署。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值