Java Springboot Web框架迁移到函数计算
更新时间:2024-07-05
本文将介绍如何将Spring Boot应该迁移部署到函数计算。
环境准备
安装OpenJDK 1.8.0及以上运行环境
迁移应用
如果您还没有开通CFC服务,请参考函数计算开通;如果您已开通,则可以跳过该步骤。
- 创建一个spring boot项目
- 引入百度云函数计算SDK
在项目pom.xml中添加百度云原生函数计算CFC(2.1.0及以上版本)的依赖。
<dependency>
<groupId>com.baidu.cfc</groupId>
<artifactId>cfc-java-core</artifactId>
<version>2.1.1</version>
</dependency>
- 代码改造
在项目的根目录src/main/java的任意目录下新增一个执行方法入口,例如在src/main/java/tacos的目录下创建MyHandler类用于实现AbstractSpringBootHandler
package tacos;
import com.baidubce.cfc.core.AbstractSpringBootHandler;
public class MyHandler extends AbstractSpringBootHandler{
@Override
public void startApp() {
// 修改为springboot项目的入口主函数,例如: 入口为TacosCloudlication class下的main函数
TacosCloudApplication.main(new String[]{""});
}
}
添加mainClass类,如APP类(需要修改pom.xml设置为启动类)
package tacos;
import com.baidubce.cfc.core.CfcClient;
public class App {
public static void main(String[] args){
CfcClient.main();
}
}
- 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 标签下增加如下的两项:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>tacos.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
发布打包
# 打包
$ mvn clean package
# zip压缩
$ cd target && zip -r springboot.zip xxx-xxx.0.0.1-SNAPSHOT.jar lib/
- 配置函数
- 创建java函数,由于springboot启动时间较长,创建函数时,函数超时时间建议设置长点
- 选择"上传.zip文件",将上一步中压缩生成的zip文件上传至百度云函数
- 处理程序中填写函数入口类名称,本例为tacos.MyHandler
- 创建http触发器
- 验证
代码示例
本章节中的代码简单示例,请点击下载简单示例。