【发布时间】:2013-05-17 11:45:23
【问题描述】:
考虑一下 spring 项目中的以下接口/对象层次结构:
public interface MyInterface {
//method defenitions
}
@Component
@Scope(SCOPE_PROTOTYPE)
public class MyClass implements MyInterface {
//method implementations
}
我在控制器方法中使用MyClass,它是从请求正文中读取的:
@RequestMapping(method = POST, value = "/posturi", consumes = "application/json")
public void createEntity(@RequestBody MyClass myClass) {
//handle request
}
jackson 库用于读取 json 数据并将其转换为 java 对象。
我想将控制器方法中的参数类型从MyClass更改为MyInterface。这似乎不起作用,因为无法使用 new 运算符实例化接口。但它可以这样创建:
MyInterface instance = applicationContext.getBean(MyInterface.class);
是否可以让 spring/jackson 以这种方式实例化对象?我想这样做,这样我的控制器就不需要知道使用了什么实现。
【问题讨论】:
标签: java spring spring-mvc jackson