gpt4 book ai didi

java - 我可以控制 spring Controller 方法参数的实例化方式吗?

转载 作者:行者123 更新时间:2023-12-02 12:10:14 26 4
gpt4 key购买 nike

考虑 Spring 项目中的以下接口(interface)/对象层次结构:

public interface MyInterface {
//method defenitions
}

@Component
@Scope(SCOPE_PROTOTYPE)
public class MyClass implements MyInterface {
//method implementations
}

我在 Controller 方法中使用MyClass,从请求正文中读取它:

@RequestMapping(method = POST, value = "/posturi", consumes = "application/json")
public void createEntity(@RequestBody MyClass myClass) {
//handle request
}

jackson库用于读取json数据并将其转换为java对象。

我想将 Controller 方法中的参数类型从 MyClass 更改为 MyInterface。这似乎不起作用,因为无法使用 new 运算符实例化接口(interface)。但它可以这样创建:

MyInterface instance = applicationContext.getBean(MyInterface.class);

是否可以让 spring/jackson 以这种方式实例化对象?我想这样做,以便我的 Controller 不需要知道使用了什么实现。

最佳答案

使用转换器应该可以实现。请参阅文档 http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/validation.html 。问题是,你如何知道转换器返回的是哪个类?相反,重新考虑您的设计以在输入中使用 POJO。

关于java - 我可以控制 spring Controller 方法参数的实例化方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16608209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com