【发布时间】:2021-11-16 17:58:13
【问题描述】:
我有一个调用后方法,方法参数用 @ReuqestBody 注释,用于类 A。现在,在我的类 A 中,有一个 B 类型的变量,并且该类有几个子类。 在请求中,我传递了 B 子类型的枚举,并希望根据子类型初始化我的 requestBody。
class A {
B b;
...
A(Subtype S, B data) {
// I need to initialize A based on subtype (my B's class would be dynamic here)
}
}
class B {
String s1;
}
class C extends B {
int x;
}
class D extends B {
double d;
String s2;
}
class XYZController {
public Resp doThis (@RequestBody A, @PathVariable SubType) {
}
}
enum SubType {
C ("C")
D ("D")
}
所以整体结构是这样的。 现在,根据我作为子类型传递的内容,我想创建那种对象。 我对 Spring 在进行此类映射时如何调用构造函数感到有些困惑。任何线索都会有帮助。
非常感谢。
【问题讨论】:
-
所以你说“我想创建那种对象”所以使用'?在请求体中并在服务层中使用简单的 if-else。
-
是的,这是另一种解决方法。我不太确定在 requestbody 映射的情况下如何调用构造函数。因此,我试图检查是否可以在注入过程中执行此操作,而不是稍后在服务层中执行此操作。
标签: java spring constructor request-mapping dynamic-mapping