注解的Spring MVC控制器是否也可以使用@ Component/@ Service注释类型进行注释,并且既可以用作控制器又可以用作bean?注释的Spring @Controller也作为Bean?
回答
编辑:将在软件设计方面更加注重,并更新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
不,听起来好像太过分了。一个或另一个,不是两个。我不知道是否有可能(我怀疑它),但我相信这是不可取的。
这是可能的,但+1推荐反对它 – 2011-05-03 08:20:45
它可以但不应该。 Web控制器应该是一个入口点,没有别的。
它执行应在专用service layer,而不是在控制器本身
谢谢。通常我会这样做,但我只想将相同的服务作为DWR服务和Rest服务公开。我可以编写一个控制器,然后与服务交谈,但它没有逻辑。它只是简单的服务;不是手写代表或代理人的大粉丝。 – pakman 2011-05-03 14:39:01
@pakman好的,如何将控制器方法放入抽象类并创建两个实例 – 2011-05-03 14:41:13
我认为你应该听到更多类似的Front Controller,MVC,DAO和多层体系结构等图形的任何可重复使用的逻辑。
并非所有可能的建议也是可取的。使用Web控制器作为依赖关系是一个可怕的设计缺陷 – 2011-05-03 08:24:04
是的,但我回答了他的问题,并建议采用这种方法,并提出了一种替代方法。我认为提供答案非常重要,即使它在设计层面上是不明智的。 – laher 2011-05-03 12:03:35
(问题是'可以',而不是'应该') – laher 2011-05-03 12:13:07