Java Spring:在一个控制器中使用不同的bean
我有以下问题:我们一直在使用Spring tools 3.8.3开发网站,其中一个选项是允许用户重置密码。为了做到这一点,他们需要指定他们的电子邮件地址并验证验证码。当这些步骤完成后,数据被发送到ResetPassword控制器,该控制器执行所有必要的检查和工作。控制器具有以下地址:Java Spring:在一个控制器中使用不同的bean,java,spring-mvc,controller,javabeans,Java,Spring Mvc,Controller,Javabeans,我有以下问题:我们一直在使用Spring tools 3.8.3开发网站,其中一个选项是允许用户重置密码。为了做到这一点,他们需要指定他们的电子邮件地址并验证验证码。当这些步骤完成后,数据被发送到ResetPassword控制器,该控制器执行所有必要的检查和工作。控制器具有以下地址: website.com/path/resetPassword/ 并具有以下结构,其中它扩展了抽象控制器模板以定义输入和输出bean: @RequestMapping(path="website.com/path/
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
}
现在我们正在添加移动API,有必要执行相同的过程,但不使用验证码验证。因此,我们只是使用没有captcha字段的bean。由于captcha是使用bean中的注释进行验证的,因此控制器本身完全没有使用它,因此我们希望使用相同的控制器来处理来自web站点和移动API的请求
我知道可以创建两个不同的控制器并将所有实现移动到服务层(读取其他类),但是仍然会有两个相同的类,只有一行不同
public class ResetPassController extends ControllerTemplate<ResetPassCaptchaBean, ResponseBean>{
//Autowiring same stuff
//Calling same methods
}
公共类ResetPassController扩展ControllerTemplate{
//自动布线同样的东西
//调用相同的方法
}
及
公共类MobileSetPassController扩展控制器模板{
//自动布线材料
//调用相同的方法
}
所以问题是:把它留给两个相同的控制器,还是有其他解决方案?
谢谢 考虑实现一个既有resetbean又有resetpasscaptchBean的公共接口,然后将resetpasscaptchBean更改为ResetPassBean的修饰符,而不是子类化它。如果您不熟悉Decorator模式,这是一个非常直接的介绍:。完成后,两种类型的重置bean只需要一个控制器。谢谢您的建议!完全忘记了装饰师,我会尝试在这里使用它们
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
}