我有以下问题:我们使用Spring工具3.8.3开发网站,其中一个选项是允许用户重置密码。为此,他们需要指定他们的电子邮件地址并验证验证码。完成这些步骤后,数据将被发送到ResetPassword控制器,后者将执行所有必要的检查和工作。控制器具有以下地址:
website.com/path/resetPassword/
并具有以下结构:扩展抽象控制器模板以定义输入和输出bean:
@RequestMapping(path="website.com/path/resetPassword/",
consumes = "application/JSON",
produces = "application/JSON",
method = "POST")
public class ResetPassController extends ControllerTemplate<ResetPassCaptchaBean, ResponseBean>{
// Autowired field declaration
// Couple of methods calling services
}
bean也只有两个字段 - 相应的电子邮件和验证码。验证码字段使用注释来检查它是否有效:
public class ResetPassCaptchaBean extends ResetPassBean {
@CaptchaValid
private String captcha;
public void setCaptcha(String captcha) {
this.captcha = captcha;
}
public String getCaptcha() {
return captcha;
}
}
public class ResetPassBean {
private String email;
public void setEmail(String email) {
this.email= email;
}
public String getCaptcha() {
return email;
}
}
现在我们正在添加移动API,并且必须执行相同的过程,但不使用验证码验证。因此,我们只是简单地使用没有验证码字段的bean。由于验证码是使用bean中的注释验证的,因此它完全没有在控制器本身中使用,因此我们希望有相同的控制器来处理来自网站的请求和来自移动API。
我理解可以创建两个不同的控制器并将所有实现移动到服务层(读取其他类)但是仍然会有两个相同的类只有一个行差异
public class ResetPassController extends ControllerTemplate<ResetPassCaptchaBean, ResponseBean>{
//Autowiring same stuff
//Calling same methods
}
和
public class MobileResetPassController extends ControllerTemplate<ResetPassBean, ResponseBean>{
//Autowiring stuff
//Calling same methods
}
所以问题是:留下两个相同的控制器还是有其他解决方案? 谢谢!