Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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 Spring MVC注释驱动类与纯命令_Java_Spring_Architecture_Command_Inversion Of Control - Fatal编程技术网

Java Spring MVC注释驱动类与纯命令

Java Spring MVC注释驱动类与纯命令,java,spring,architecture,command,inversion-of-control,Java,Spring,Architecture,Command,Inversion Of Control,我不得不说,我发现SpringMVC的注释驱动模型很方便,但是来自Flex世界,我非常习惯使用命令设计模式。它可以很容易地降低抽象级别,并通过扩展通用命令功能实现灵活性。然而,我发现很难将其适应于Spring环境 在理想情况下,应该没有控制器,只有一个通用HandleWebRequestCommand类,该类基于请求参数(或URL路径变量)执行另一个命令(或命令链)。其他命令将负责调用远程服务、处理数据库检索/持久性、文件操作等。这将把整个控制器/服务/持久性蛋糕简化为一组可互换且不耦合的命令

我不得不说,我发现SpringMVC的注释驱动模型很方便,但是来自Flex世界,我非常习惯使用命令设计模式。它可以很容易地降低抽象级别,并通过扩展通用命令功能实现灵活性。然而,我发现很难将其适应于Spring环境

在理想情况下,应该没有控制器,只有一个通用HandleWebRequestCommand类,该类基于请求参数(或URL路径变量)执行另一个命令(或命令链)。其他命令将负责调用远程服务、处理数据库检索/持久性、文件操作等。这将把整个控制器/服务/持久性蛋糕简化为一组可互换且不耦合的命令

到目前为止,最困难的部分似乎是在正在发生的事情和应该执行的命令之间进行映射。我看到一个类似XML上下文的文件非常适合用于此目的,其中声明了所有命令。此外,还将提供它们的依赖关系(每个命令可能都有一组它依赖的其他命令(当然是接口命令)),到目前为止,我不打算使用事件驱动体系结构,因为大多数命令仍将作为HTTP请求的结果执行,因此,最重要的映射将是handleWebRequest命令中的映射


我很困惑。请帮忙。我应该在今年春天继续安装,还是直接在JavaEE上开始开发自己的体系结构?这样的架构行吗?

我想你还没有看到Spring的本质

“一个通用的
HandleWebRequestCommand
类”已经存在了——它是如何路由到控制器的。“命令”是(大致上)服务,可以通过多种方式创建和组合

Spring的存在在很大程度上正是为了将事物解耦,而且它非常擅长于此



如果您需要更具体的帮助,您可能希望发布一个简明的示例,说明您认为在Spring中无法做到的事情,让人们能够从一个范例映射到另一个范例。

我认为您还没有看到Spring的本质

“一个通用的
HandleWebRequestCommand
类”已经存在了——它是如何路由到控制器的。“命令”是(大致上)服务,可以通过多种方式创建和组合

Spring的存在在很大程度上正是为了将事物解耦,而且它非常擅长于此



如果您需要更具体的帮助,您可能想发布一个简明的示例,说明您认为在Spring中无法做到的事情,让人们可以从一个范例映射到另一个范例。

commands!=服务。命令更细粒度,允许交叉关注点。它们遵循一种严格的单执行方法设计模式,这使得切换一种方法与另一种方法变得非常容易。@user1107412您在进行人工区分。一个服务可以是你想要的任何东西,也可以是你想要的任何粒度。@user1107412底线是你可以将你想要的任何东西注入到几乎任何东西中,你可以随意调用它们,它们中的每一个都可以做从大到小的任何操作。我承认我对这个问题的理解过于直截了当。我认为你是对的。我至少可以去掉控制器层。我使用AJAX调用返回JSON的服务。现在我仍然使用多个控制器来进行URL映射,但它们所做的是将操作传递到服务上。我猜,我只能使用一个控制器,它根据请求参数映射调用正确的服务,对吗?@user1107412再次使用单个控制器意味着重新发明轮子,但当然,你可以。您还可以将通用URL映射到单个servlet,从URL嵌入参数的映射中提取服务/任何内容,等等。您可以使用通用类和工厂玩游戏。许多选项。命令!=服务。命令更细粒度,允许交叉关注点。它们遵循一种严格的单执行方法设计模式,这使得切换一种方法与另一种方法变得非常容易。@user1107412您在进行人工区分。一个服务可以是你想要的任何东西,也可以是你想要的任何粒度。@user1107412底线是你可以将你想要的任何东西注入到几乎任何东西中,你可以随意调用它们,它们中的每一个都可以做从大到小的任何操作。我承认我对这个问题的理解过于直截了当。我认为你是对的。我至少可以去掉控制器层。我使用AJAX调用返回JSON的服务。现在我仍然使用多个控制器来进行URL映射,但它们所做的是将操作传递到服务上。我猜,我只能使用一个控制器,它根据请求参数映射调用正确的服务,对吗?@user1107412再次使用单个控制器意味着重新发明轮子,但当然,你可以。您还可以将通用URL映射到单个servlet,从URL嵌入参数的映射中提取服务/任何内容,等等。您可以使用通用类和工厂玩游戏。有很多选择。