0
假設,有以下代碼:依賴注入由條件中運行時
@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
class Controller {
/* inject here */
public @NonNull GenericService service;
public void doo(List<GenericDTO> list, String type) {
service.doo(list);
}
}
class GenericDTO { ... }
class GenericService { ... }
class OfferService extends GenericService { ... }
class OtherService extends GenericService { ... }
如果type
從doo
方法是等於"offer"
,我要注入的OfferService
實例service
。如果我收到"other"
,我必須使用OtherService
,依此類推。那可能嗎?
那麼,沒有。這是一個單一的領域。它將被注入一次(如果它是單身bean)。注入邏輯將無法訪問方法調用中存在的值。只需注入兩個服務並使用「if」來決定。或者,創建一個Map來根據密鑰類型選擇合適的服務。 –