2011-05-02 339 views

回答

5

编辑:将在软件设计方面更加注重,并更新API链接SpringV3

正如在其他的答案中提到,这不是Spring MVC的一种理想的方法,但仍然控制器将已经可用于在您的ApplicationContext中进行自动装配。

它已经是您的ApplicationContext中的一个Bean,因此您可以按类型自动连线。不需要添加@Component注释。

从Spring API文档:“这个注释作为@Component的专门化,允许通过类路径扫描来自动检测实现类。”

http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/stereotype/Controller.html

同为@Service也是如此。

虽然我自己做过,但我通常不会推荐这种设计方法。

如果可能,请将所需功能重构为一个单独的bean,然后根据需要将它自动连接到@Controller和任何其他bean。

如果您正如您所评论的那样,您对这一决定(与以前的设计选择一样)是“被迫”的,那就这样吧。

HTH

+0

并非所有可能的建议也是可取的。使用Web控制器作为依赖关系是一个可怕的设计缺陷 – 2011-05-03 08:24:04

+0

是的,但我回答了他的问题,并建议采用这种方法,并提出了一种替代方法。我认为提供答案非常重要,即使它在设计层面上是不明智的。 – laher 2011-05-03 12:03:35

+0

(问题是'可以',而不是'应该') – laher 2011-05-03 12:13:07

1

不,听起来好像太过分了。一个或另一个,不是两个。我不知道是否有可能(我怀疑它),但我相信这是不可取的。

+0

这是可能的,但+1推荐反对它 – 2011-05-03 08:20:45

4

可以不应该。 Web控制器应该是一个入口点,没有别的。

它执行应在专用service layer,而不是在控制器本身

+0

谢谢。通常我会这样做,但我只想将相同的服务作为DWR服务和Rest服务公开。我可以编写一个控制器,然后与服务交谈,但它没有逻辑。它只是简单的服务;不是手写代表或代理人的大粉丝。 – pakman 2011-05-03 14:39:01

+0

@pakman好的,如何将控制器方法放入抽象类并创建两个实例 – 2011-05-03 14:41:13

0

我认为你应该听到更多类似的Front Controller,MVC,DAO和多层体系结构等图形的任何可重复使用的逻辑。