给 SAP BTP 创建的 Java 应用添加 Custom Event Handler 支持创建功能
在 productservice 文件夾下新建一個(gè) handler 文件夾:
在該文件夾里新建一個(gè) AdminService.java 文件:
此類現(xiàn)在處理針對(duì) AdminService 的 Products 實(shí)體的 READ 和 CREATE 事件。
-
READ 操作只返回保存在內(nèi)存中的所有實(shí)體。
-
CREATE 事件從 CQN 表示中提取有效負(fù)載并將其存儲(chǔ)在內(nèi)存中。
CDS 查詢表示法 (CQN) 是 CAP 中用于針對(duì)服務(wù)運(yùn)行查詢的通用語言。 它可用于與模型定義的服務(wù)進(jìn)行通信,也可用于與數(shù)據(jù)庫等遠(yuǎn)程服務(wù)通信。
事件處理程序使用以下 API,這些 API 可用于 CAP Java 中的服務(wù)提供者:
事件處理程序類必須實(shí)現(xiàn)標(biāo)記接口,marker interface EventHandler 并將自己注冊(cè)為 Spring Beans (@Component)。標(biāo)記接口很重要,因?yàn)樗?CAP Java 運(yùn)行時(shí)能夠在所有 Spring Bean 中識(shí)別這些類。
事件處理程序方法使用@Before、@On 或@After 注釋注冊(cè)。每個(gè)事件,例如實(shí)體創(chuàng)建,都會(huì)經(jīng)歷這三個(gè)階段。每個(gè)階段的語義略有不同。
注釋 @ServiceName 指定所有事件處理程序方法適用的默認(rèn)服務(wù)名稱。這里是 AdminService,因?yàn)檫@也是在 CDS 模型中定義服務(wù)時(shí)的名稱。
事件處理程序方法獲取特定于事件的事件上下文參數(shù),該參數(shù)提供對(duì)事件輸入?yún)?shù)的訪問和設(shè)置結(jié)果的能力。例如,讓我們看一下 CdsCreateEventContext 上下文參數(shù)。我們要擴(kuò)展的事件是 CREATE 事件。上下文變量的類型特定于這個(gè)擴(kuò)展的 CREATE 事件。 onCreate 方法返回 void,因?yàn)榻Y(jié)果是通過運(yùn)行設(shè)置的:context.setResult(…)。
使用命令行 mvn clean spring-boot:run 啟動(dòng)這個(gè)模板應(yīng)用,然后在命令行里使用 curl 命令插入一條新的 product 數(shù)據(jù):
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 應(yīng)用 url:
https://workspaces-ws-pdwk4-app1.us10.trial.applicationstudio.cloud.sap
能看到剛剛插入的 product:
總結(jié)
以上是生活随笔為你收集整理的给 SAP BTP 创建的 Java 应用添加 Custom Event Handler 支持创建功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DevOps是什么意思(}写法是什么意思
- 下一篇: 微软 Xbox 无线手柄推出新配色:北极