在 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-a...
能看到剛剛插入的 product: