我有一個使用 Tomcat v10.0.x 和 org.glassfish.jersey.* 在 3.0.5 版本中提供 Web 服務的實作。最初,我在回傳回應物件MediaType.APPLICATION_JSON
時遇到問題,因為它們的屬性/獲取器是Optional
.
一旦我根據這個問題添加了 jackson-datatype-jdk8 2.13.3 ,一切都開始正常作業。
不過,我很困惑。我沒有注冊Jdk8Module
,因為我沒有主動創建Client
實體。就我相信將 Jersey 的內部作業原理理解為 JAX-RS 實作而言,@POST
我使用的注釋負責處理 Client 物件。它也可能是Tomcat。在 Web 上,幾乎沒有解釋的簡單方法與難以理解的深入檔案之間存在很大差距。
Jdk8Module 在哪里注冊,如何注冊,為什么注冊,或者根本沒有注冊?簡單來說,為什么我的代碼有效?
uj5u.com熱心網友回復:
簡短回答:META-INF/服務。
更長的答案:Jackson 定義了Module 類,該類用作由標準 ServiceLoader 機制加載的服務(在 META-INF/services 中定義)。Jackson 定義了一個靜態方法 loading allModules
并且 Jacksonjackson-datatype-java8
模塊定義了適當的 service。
Jersey 只是使用Jackson 服務查找例程來注冊模塊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/504807.html