JAX RS4 資源的動態定位

2021-06-22 08:41:04 字數 1461 閱讀 7879

目前我們的電影服務只提供了對電影資訊的訪問服務,現在我們要再增加兩項級服務,分別用來訪問導演和演員資訊。加上原先的電信資訊服務,我們把 uri 統一放到/ms/rest/service/的子路徑下。最先想到的方法就是為這三個 uri 分別寫 jax-rs 服務:

@singleton

@path("service/movie")

public class movieservice

@singleton

@path("service/director")

public class directorservice

@singleton

@path("service/director")

public class actorservice

這種寫法的缺點就是讓三個本來有點關係(父級 uri 相同)的服務被放到了毫不相干的三個類裡面,不乙個個類地檢視註解難以看出這點關係。為此,jax-rs 提供了動態資源繫結的功能,讓我們能夠對這種情況做一些整理。

首先,我們引入乙個服務定位器來處理集中管理這三個子級服務:

@singleton

@path("service")

public class servicelocator

@path("")

public object locateservice(@pathparam("name") string name)

return service;

}}

該類中的locateservice方法根據服務的名稱返回相應的服務例項,注意該方法只有乙個@path註解,因為它並不清楚請求的具體內容;返回物件的型別為object,表明動態資源定位不要求服務類實現相同的介面,只需要它們的方法帶有相應的 jax-rs 註解,就能夠被 jax-rs 自動發現和處理(專業術語稱為 introspect,內省),以movieservice為例:

@singleton

public class movieservice ")

public movie find(@pathparam("id") int id) else

}// 此處省略若干行

}

這樣,每個請求實際上都由兩個類先後處理。例如,處理請求get /ms/rest/service/movie/1的時候,先由servicelocator返回相配的服務例項movieservice,然後再由該例項的find方法返回結果。比起最開始那三個簡單的類,雖然多了一層呼叫,但換來了更加清晰的結構。

動態資源定位是乙個非常靈活強大的功能,用好的話,完全可以把 uri 層次整理成乙個類似於檔案目錄結構的抽象檔案系統。

ue4 動態載入資源

動態載入非藍圖資源 如 聲音等使用loadobject 資源型別 nullptr,text 資源路徑引用 載入藍圖資源 獲得藍圖類 loadclass 藍圖的型別 nullptr,text 資源路徑引用 c 這裡需要注意就是資源的路徑需要額外加上 c 例如uclass result1 loadcla...

scrollbar的動態定位

在.net開發中,有時候需要自定義滾動條的位置,這裡我們以tabpage為例,通常如果你要直接如下賦值 this.tabcontrol.selectedtab.autoscrollposition 20 那麼會提示錯誤,無法賦值,事實上應該如下才可以 point p new point needmo...

中動態路徑載入 UE4靜態 動態載入資源方式

ue4靜態 動態載入資源方式 本文將詳細介紹使用ue4靜態載入和動態載入的實現方式靜態載入指的是在建構函式中完成的載入方式,這種方式的弊端明顯,就是需要寫死路徑,一旦改變路徑讀取失敗很容易造成程式崩潰api介面 constructorhelpers fclassfinder 和fobjectfind...