我正在使用spring 4
REST。
我有一个基础class
,而其他许多class
也是如此。
例如,Employee是基础class
,其他类hr,工程师,培训师等等扩展了员工。
我必须创建REST API
来创建不同类型的员工。
interface
是一个POST
,它接受所有类型的员工。我不能为每个子类型创建不同的interface
。从基数来看,我知道什么是子类型。
@RequestMapping(value= "/test/{employeeType}", method = RequestMethod.POST)
public void createEmp(@RequestBody Employee employee){
//If type is HR, I want to cast to HR type
//Is there any way we can take generic object in spring rest and then manage internally ?
}
答案 0 :(得分:0)
也许试试这个?
@RequestMapping(value= "/test/{employeeType}", method = RequestMethod.POST)
public void createEmp(@PathVariable String employeeType, @RequestBody EmployeeDTO employeeDTO){
transform(employeeType,employeeDTO);
}
这里EmployeeDTO将包含所有可能的参数,以便它可以构建任何子类,然后基于您刚刚转换为域对象(Employee)的employeeType?
按要求编辑
以下是示例代码:
public class Employee {
private String name;
}
public class Hr extends Employee {
private String department;
}
public class Hr extends Employee {
private String department;
}
然后DTO类应如下所示:
public class EmployeeDTO {
private String name;
private String course;
private String department;
}
然后,当您知道自己的类型时,可以使用DTO中的所有必要值转换为您想要的任何内容
编辑:现在我想起来这也可能是一个选择,但我需要看你的课程。
@RequestMapping(value= "/test/employee", method = RequestMethod.POST)
public void createEmp(@RequestBody Employee employee){
@RequestMapping(value= "/test/hr", method = RequestMethod.POST)
public void createHr(@RequestBody Hr hr){