請看下面的接口/對象分層結構中的彈簧項目:我可以控制如何實例化spring控制器方法參數嗎?
@RequestMapping(method = POST, value = "/posturi", consumes = "application/json")
public void createEntity(@RequestBody MyClass myClass) {
//handle request
}
傑克遜庫用來:
public interface MyInterface {
//method defenitions
}
@Component
@Scope(SCOPE_PROTOTYPE)
public class MyClass implements MyInterface {
//method implementations
}
我在其被從所述請求體讀出的控制器的方法使用MyClass
讀取json數據並將其轉換爲java對象。
我想將控制器方法中參數的類型從MyClass
更改爲MyInterface
。這似乎不起作用,因爲接口不能用new
運算符實例化。但可能這樣創建:
MyInterface instance = applicationContext.getBean(MyInterface.class);
是否有可能使春/傑克遜實例化對象這種方式?我想這樣做,以便我的控制器不需要知道使用了什麼實現。
整點是不知道的情況下會是怎樣。只要它實現MyInterface,它就會好的。 –
查看轉換器的文檔我沒有看到他們如何在不知道MyClass的情況下將MyInterface的實例注入到控制器方法中的可能性。 –
應該是這樣的:'類StringToMyInterface實現轉換器<字符串,MyInterface的> { \t公共MyInterface的轉換(字符串源){ \t \t MyInterface的I =新MyClass的(); //實現MyIterface \t \t return i; \t} }'你總是必須返回類的實例 – igo