Java Springboot Web框架迁移到函数计算
更新时间:2024-07-05
本文将介绍如何将Spring Boot应该迁移部署到函数计算。
环境准备
安装OpenJDK 1.8.0及以上运行环境
迁移应用
如果您还没有开通CFC服务,请参考函数计算开通;如果您已开通,则可以跳过该步骤。
- 创建一个spring boot项目
- 引入百度云函数计算SDK
在项目pom.xml中添加百度云原生函数计算CFC(2.1.0及以上版本)的依赖。
Plain Text
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
Plain Text
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设置为启动类)
Plain Text
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编译并打包函数代码
如果完成上述对SpringBoot服务的改造工作,还需要对项目的打包构建工作进行一定的修改(主要是对CFC函数代码包的一些限制),主要限制如下:
- 打包上传函数的根目录只有一个mainClass对应的jar包
- mainClass对应的class应为启动CfcClient对应的class
- 打包上传的函数目录中依赖完整,所有依赖jar包都在函数压缩包中
- 在函数中配置的handler类与函数中实现的handler类一致
增加plugin配置
在 pom.xml文件中添加 maven-assembly-plugin,构建一个可执行jar包。添加maven-dependency-plugin,将jar包所依赖的其他jar包拷贝至${project.build.directory}/lib目录。 在 project 标签下增加如下的两项:
Plain Text
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 <!-- Build an executable JAR -->
25 <groupId>org.apache.maven.plugins</groupId>
26 <artifactId>maven-jar-plugin</artifactId>
27 <version>3.0.2</version>
28 <configuration>
29 <archive>
30 <manifest>
31 <addClasspath>true</addClasspath>
32 <classpathPrefix>lib/</classpathPrefix>
33 <mainClass>tacos.App</mainClass>
34 </manifest>
35 </archive>
36 </configuration>
37 </plugin>
38 </plugins>
39</build>
发布打包
Plain Text
1# 打包
2$ mvn clean package
3# zip压缩
4$ cd target && zip -r springboot.zip xxx-xxx.0.0.1-SNAPSHOT.jar lib/
- 配置函数
- 创建java函数,由于springboot启动时间较长,创建函数时,函数超时时间建议设置长点
- 选择"上传.zip文件",将上一步中压缩生成的zip文件上传至百度云函数
- 处理程序中填写函数入口类名称,本例为tacos.MyHandler
- 创建http触发器
- 验证
代码示例
本章节中的代码简单示例,请点击下载简单示例。