Spring MVC注释驱动类vs纯命令

时间:2012-01-21 13:27:10

标签: java spring architecture command inversion-of-control

我不得不说我发现Spring MVC的注释驱动模型很方便,但是来自Flex世界,我非常习惯使用Command设计模式。通过扩展通用命令功能,可以非常轻松地降低抽象级别并实现灵活性。但是,我发现很难将其融入Spring环境中。

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

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

我很困惑。请帮忙。我应该继续适应这个Spring,还是直接在Java EE上开发我自己的架构?这样的架构是否可以接受?

1 个答案:

答案 0 :(得分:4)

我认为你还没有看到Spring是什么。

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

Spring在很大程度上存在,恰恰是为了解耦事物而且它非常擅长。


如果你想要更具体的帮助,你可能想要在Spring发布一个简洁的例子,说明你认为你不能干净利落的事情,让人们从一个范例映射到另一个范例。