Java Springboot Web框架迁移到函数计算
所有文档
menu

函数计算 CFC

Java Springboot Web框架迁移到函数计算

产品详情立即开通

本文将介绍如何将Spring Boot应该迁移部署到函数计算。

环境准备

安装OpenJDK 1.8.0及以上运行环境

迁移应用

如果您还没有开通CFC服务,请参考函数计算开通;如果您已开通,则可以跳过该步骤。

  1. 创建一个spring boot项目
  2. 引入百度云函数计算SDK

在项目pom.xml中添加百度云原生函数计算CFC(2.1.0及以上版本)的依赖。

<dependency>
    <groupId>com.baidu.cfc</groupId>
    <artifactId>cfc-java-core</artifactId>
    <version>2.1.1</version>
</dependency>
  1. 代码改造

在项目的根目录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();
    }
}
  1. 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/
  1. 配置函数
  • 创建java函数,由于springboot启动时间较长,创建函数时,函数超时时间建议设置长点

1.png

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

2.png

  1. 创建http触发器

3.png

  1. 验证

4.png

代码示例

本章节中的代码简单示例,请点击下载简单示例

上一篇
使用 CFC HTTP 触发器托管 API
下一篇
CFC支持SSE协议