Java Springboot Web框架迁移到函数计算
更新时间:2026-09-24
本文将介绍如何将Spring Boot应该迁移部署到函数计算。
环境准备
安装 OpenJDK 1.8.0 及以上运行环境,并确保已安装 Maven。
迁移应用
如果您还没有开通CFC服务,请参考函数计算开通;如果您已开通,则可以跳过该步骤。
- 创建一个spring boot项目
- 引入百度云函数计算SDK
在项目pom.xml中添加百度云原生函数计算CFC(2.1.0及以上版本)的依赖。
XML
1<dependency>
2 <groupId>com.baidu.cfc</groupId>
3 <artifactId>cfc-java-core</artifactId>
4 <version>2.1.1</version>
5</dependency>
- 代码改造
在项目的根目录src/main/java的任意目录下新增一个执行方法入口,例如在src/main/java/tacos的目录下创建MyHandler类用于实现AbstractSpringBootHandler
Java
1package tacos;
2
3import com.baidubce.cfc.core.AbstractSpringBootHandler;
4public class MyHandler extends AbstractSpringBootHandler{
5
6 @Override
7 public void startApp() {
8 // 修改为springboot项目的入口主函数,例如: 入口为TacosCloudlication class下的main函数
9 TacosCloudApplication.main(new String[]{""});
10 }
11}
添加mainClass类,如APP类(需要修改pom.xml设置为启动类)
Java
1package tacos;
2
3import com.baidubce.cfc.core.CfcClient;
4
5public class App {
6 public static void main(String[] args){
7 CfcClient.main();
8 }
9}
- Maven 编译并打包函数代码
如果完成上述对 Spring Boot 服务的改造工作,还需要对项目的打包构建进行调整,以满足 CFC 对函数代码包的要求。
| 要求 | 说明 |
|---|---|
| 主 JAR | 打包上传的 ZIP 根目录只保留一个与 mainClass 对应的 JAR 包。 |
| 启动类 | mainClass 对应的类必须用于启动 CfcClient。 |
| 依赖目录 | 所有依赖 JAR 必须随代码包一起上传,并放在 lib/ 目录。 |
| 处理程序 | 函数中配置的 Handler 必须与代码中实现的处理类保持一致。 |
增加 plugin 配置
在 pom.xml 文件中添加 maven-dependency-plugin 和 maven-jar-plugin。前者用于将依赖复制到 ${project.build.directory}/lib 目录,后者用于构建可执行 JAR。请在 project 标签下增加如下配置:
XML
1<build>
2 <plugins>
3 <plugin>
4 <groupId>org.apache.maven.plugins</groupId>
5 <artifactId>maven-dependency-plugin</artifactId>
6 <version>3.1.1</version>
7 <executions>
8 <execution>
9 <id>copy-dependencies</id>
10 <phase>package</phase>
11 <goals>
12 <goal>copy-dependencies</goal>
13 </goals>
14 <configuration>
15 <outputDirectory>${project.build.directory}/lib</outputDirectory>
16 <overWriteReleases>false</overWriteReleases>
17 <overWriteSnapshots>false</overWriteSnapshots>
18 <overWriteIfNewer>true</overWriteIfNewer>
19 </configuration>
20 </execution>
21 </executions>
22 </plugin>
23 <plugin>
24 <groupId>org.apache.maven.plugins</groupId>
25 <artifactId>maven-jar-plugin</artifactId>
26 <version>3.0.2</version>
27 <configuration>
28 <archive>
29 <manifest>
30 <addClasspath>true</addClasspath>
31 <classpathPrefix>lib/</classpathPrefix>
32 <mainClass>tacos.App</mainClass>
33 </manifest>
34 </archive>
35 </configuration>
36 </plugin>
37 </plugins>
38</build>
| 参数 | 必填 | 说明 |
|---|---|---|
outputDirectory |
是 | 将依赖复制到 ${project.build.directory}/lib 目录。 |
mainClass |
是 | 设置可执行 JAR 的启动类,本例为 tacos.App。 |
classpathPrefix |
否 | 为依赖类路径添加 lib/ 前缀。 |
发布打包
Bash
1# 打包
2mvn clean package
3# zip 压缩
4cd target && zip -r springboot.zip xxx-xxx.0.0.1-SNAPSHOT.jar lib/
压缩后的 ZIP 根目录应包含主 JAR 和 lib/ 依赖目录。
- 配置函数
- 创建java函数,由于springboot启动时间较长,创建函数时,函数超时时间建议设置长点

- 选择"上传.zip文件",将上一步中压缩生成的zip文件上传至百度云函数
- 处理程序中填写函数入口类名称,本例为tacos.MyHandler

- 创建http触发器

- 验证

代码示例
本章节中的代码简单示例,请点击下载简单示例。
评价此篇文章
