最佳实践

有奖征文|投稿上云技术实践,赢取价值5000元大奖> HOT

代码形态

Java 开发的 SCF 云函数的代码形态一般如下所示:

package example;

public class Hello {
    public String mainHandler(KeyValueClass kv) {
        System.out.println("Hello world!");
        System.out.println(String.format("key1 = %s", kv.getKey1()));
        System.out.println(String.format("key2 = %s", kv.getKey2()));
        return String.format("Hello World");
    }
}

建立参数 KeyValueClass 类:

package example;
public class KeyValueClass {
    String key1;
    String key2;

    public String getKey1() {
        return this.key1;
    }   
    public void setKey1(String key1) {
        this.key1 = key1;
    }   
    public String getKey2() {
        return this.key2;
    }   
    public void setKey2(String key2) {
        this.key2 = key2;
    }   

    public KeyValueClass() {
    }   
}

执行方法

由于 Java 包含有包的概念,因此执行方法和其他语言有所不同,需要带有包信息。代码示例中对应的执行方法为 example.Hello::mainHandler,此处 example 标识为 Java package,Hello 标识为类,mainHandler 标识为类方法。

入参和返回

代码示例中,mainHandler 所使用的入参包含了两个类型,String 和 Context,返回使用了 String 类型。其中入参的前一类型标识事件入参,后一类型标识函数运行时信息。事件入参和函数返回目前支持的类型包括 Java 基础类型和 POJO 类型;函数运行时目前为 com.qcloud.scf.runtime.Context 类型,其相关库文件可单击 此处 下载。

事件入参及返回参数类型

事件入参 返回参数类型
Java 基础类型 包括 byte,int,short,long,float,double,char,boolen 这八种基本类型和包装类,也包含 String 类型。
POJO 类型 Plain Old Java Object,您应使用可变 POJO 及公有 getter 和 setter,在代码中提供相应类型的实现。

Context 入参

  • 使用 Context 需要在代码中使用 com.qcloud.scf.runtime.Context; 引入包,并在打包时带入 jar 包。
  • 如不使用此对象,可在函数入参中忽略,可写为 public String mainHandler(String name)
注意:

部分触发器传递的入参事件结构目前已有一部分已定义,可直接使用。您可通过 cloud event 定义 获取 Java 的库并使用。如果使用过程中发现问题,可以通过 提交 issue 、咨询 在线客服提交工单 来寻求帮助。

目录