Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SpringMVC将许多参数从控制器传递到服务_Java_Spring_Spring Mvc - Fatal编程技术网

Java 使用SpringMVC将许多参数从控制器传递到服务

Java 使用SpringMVC将许多参数从控制器传递到服务,java,spring,spring-mvc,Java,Spring,Spring Mvc,我将MVC与spring一起使用,所以我想从我的控制器传递一些参数,这些字段来自我的提交表单,我的问题是传递这些字段、通过bean表单发送到服务或创建另一个bean的最佳方式 @Autowired RegisterServiceImpl registerServiceImpl; @RequestMapping(value="/registeruser", method = RequestMethod.POST ) public String register(

我将MVC与spring一起使用,所以我想从我的控制器传递一些参数,这些字段来自我的提交表单,我的问题是传递这些字段、通过bean表单发送到服务或创建另一个bean的最佳方式

    @Autowired
    RegisterServiceImpl registerServiceImpl;

    @RequestMapping(value="/registeruser", method = RequestMethod.POST )
    public String register( @ModelAttribute(value = "registerForm") RegisterForm registerForm , ModelMap model{

         //previous method extract each field from registerForm 
        //registerServiceImpl.registerUser(field1,field2,field3,fieldn);

        //actual method pass object registerForm
        registerServiceImpl.registerUser(registerForm);   

    }

问题是,将RegisterForm传递给服务类是否会生成高耦合?o使用最佳实践成功实现低耦合的一些替代方案。

是否将发电机紧密耦合取决于您的用例。
RegisterServiceImpl#registerUser
是否在多个位置使用?
RegisterForm
类型是否也会从重用中受益?如果是这种情况,则不应出现问题,您可以将
RegisterForm
用作控制器内的命令对象。在此场景中,
RegisterForm
实际上是一个DTO


但是,您可能会遇到这样的情况:
RegisterForm
包含其他永远不会来自视图的详细信息(可能由
RegisterServiceImpl
中的其他方法使用),或者您需要对来自视图的数据执行某种转换/转换。如果基本上是这样,我通常会创建一个命令对象,然后将该对象中的信息转换为
RegisterForm
的实例,然后将其传递到服务中。

是否
RegisterForm
会产生紧密耦合取决于您的用例。
RegisterServiceImpl#registerUser
是否在多个位置使用?
RegisterForm
类型是否也会从重用中受益?如果是这种情况,则不应出现问题,您可以将
RegisterForm
用作控制器内的命令对象。在此场景中,
RegisterForm
实际上是一个DTO


但是,您可能会遇到这样的情况:
RegisterForm
包含其他永远不会来自视图的详细信息(可能由
RegisterServiceImpl
中的其他方法使用),或者您需要对来自视图的数据执行某种转换/转换。如果在很大程度上是这样,我通常会创建一个命令对象,然后将该对象的信息转换为
RegisterForm
的实例,然后将其传递到服务中。

RegisterForm确实是一个DTO,如前所述,您可能会遇到仅来自DTO的部分数据有用的情况,因此需要转换器


我建议使用弹簧提供的,您只需要注册自定义实现,对转换服务的一次调用就可以保持代码干净并与转换逻辑解耦。

RegisterPerform确实是一个DTO,正如前面提到的,您可能会遇到这样的情况,即DTO中的部分数据很有用,因此需要转换器


我建议使用spring提供的功能,您只需注册自定义实现,对转换服务的一次调用就可以保持代码干净并与转换逻辑解耦。

阅读数据传输对象(DTO)的概念。出于可测试性目的,您可能希望将您的服务对象声明为其接口类型
RegisterService
。请阅读数据传输对象(DTO)的概念。出于可测试性目的,您可能希望将您的服务对象声明为其接口类型
RegisterService
。需要很多帮助,
RegisterForm
仅用于使用此表单的注册用户。需要大量帮助,
RegisterForm
仅用于使用此表单的注册用户。