给 SAP BTP 创建的 Java 应用添加 Custom Event Handler 支持创建功能
在 productservice 文件夾下新建一個 handler 文件夾:
在該文件夾里新建一個 AdminService.java 文件:
此類現在處理針對 AdminService 的 Products 實體的 READ 和 CREATE 事件。
-
READ 操作只返回保存在內存中的所有實體。
-
CREATE 事件從 CQN 表示中提取有效負載并將其存儲在內存中。
CDS 查詢表示法 (CQN) 是 CAP 中用于針對服務運行查詢的通用語言。 它可用于與模型定義的服務進行通信,也可用于與數據庫等遠程服務通信。
事件處理程序使用以下 API,這些 API 可用于 CAP Java 中的服務提供者:
事件處理程序類必須實現標記接口,marker interface EventHandler 并將自己注冊為 Spring Beans (@Component)。標記接口很重要,因為它使 CAP Java 運行時能夠在所有 Spring Bean 中識別這些類。
事件處理程序方法使用@Before、@On 或@After 注釋注冊。每個事件,例如實體創建,都會經歷這三個階段。每個階段的語義略有不同。
注釋 @ServiceName 指定所有事件處理程序方法適用的默認服務名稱。這里是 AdminService,因為這也是在 CDS 模型中定義服務時的名稱。
事件處理程序方法獲取特定于事件的事件上下文參數,該參數提供對事件輸入參數的訪問和設置結果的能力。例如,讓我們看一下 CdsCreateEventContext 上下文參數。我們要擴展的事件是 CREATE 事件。上下文變量的類型特定于這個擴展的 CREATE 事件。 onCreate 方法返回 void,因為結果是通過運行設置的:context.setResult(…)。
使用命令行 mvn clean spring-boot:run 啟動這個模板應用,然后在命令行里使用 curl 命令插入一條新的 product 數據:
curl -X POST http://localhost:8080/odata/v4/AdminService/Products \ -H "Content-Type: application/json" \ -d '{"ID": 42, "title": "My Tutorial Product", "descr": "You are doing an awesome job!"}'插入成功:
打開 Java 應用 url:
https://workspaces-ws-pdwk4-app1.us10.trial.applicationstudio.cloud.sap
能看到剛剛插入的 product:
總結
以上是生活随笔為你收集整理的给 SAP BTP 创建的 Java 应用添加 Custom Event Handler 支持创建功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DevOps是什么意思(}写法是什么意思
- 下一篇: 一个实际的例子学习 SAP BTP Ja