首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JAX-RS ClientBuilder 創建客戶端代碼解析:配置、註冊提供者、構建實例

     編輯:程式設計疑難解答

代碼片段

ClientConfig clientConfig = new ClientConfig();
clientConfig.register(GsonJsonProvider.class);
Client client = ClientBuilder.newClient(clientConfig);

逐行解析

  1. ClientConfig clientConfig = new ClientConfig();
    創建一個客戶端配置對象,用於集中管理攔截器、提供者、屬性等配置。
  2. clientConfig.register(GsonJsonProvider.class);
    向配置中註冊 JSON 提供者(此處為 Gson 實現)。該提供者負責實體類與 JSON 的序列化/反序列化,替代默認的 Jackson 或 MOXy。
  3. Client client = ClientBuilder.newClient(clientConfig);
    調用 ClientBuilder 的工廠方法,根據配置構建不可變的 Client 實例。內部實際創建的是 ClientBuilder.Client 內部類實例,並將配置凍結注入。

後續典型用法

WebTarget target = client.target("https://api.example.com");
Response response = target.path("users").request(MediaType.APPLICATION_JSON).get();
List<User> users = response.readEntity(new GenericType<List<User>>() {});

關鍵點

  • Client 是**線程安全、重量級**對象,應用程序通常只需創建**單例**複用。
  • ClientConfig 還可註冊 ClientRequestFilter、ClientResponseFilter 實現簽名、日誌、重試等橫切關注點。
  • 若未顯式註冊 JSON 提供者,運行時需確保類路徑存在默認提供者(如 jersey-media-json-jackson),否則會拋 MessageBodyWriter not found 異常。

這三行代碼完成了 JAX-RS 客戶端的「配置 → 註冊擴展 → 構建實例」標準啟動流程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved