背景:
接收客户端请求的model(Request)中,有一个成员变量f,对不同的业务类型(type),需要实例化成不同的实例(A or B)。
public abstract class Father {
}
public class A extends Father {
private String a1;
private String a2;
}
public class B extends Father {
private String b1;
private String b2;
}
public class Request {
private Father f;
private String type; // 根据不通的type,将f实例化成A或B
}
目前的解决办法是,在请求model中,直接用一个JSONObject来接收,后面再转化成具体的实例。
public class Request {
private JSONObject f;
private String type; // 根据不通的type,将f实例化成A或B
}
请问,springboot里需要怎样配置(或者说,要怎么做),可以省去json->A的这一段代码?我在后面的业务中,直接强制转换成具体的实例。
或者说,有没看有其他的更好的解决方案,来处理类似的问题?
感谢各位大佬不吝赐教。。
springboot本身没办法处理吧,因为你这算是业务逻辑了。
如果这种情况出现很多可以考虑用拦截器intercepter,在拦截器根据type判断然后再封装model,这样在方法里就能获取到对应的A或B了