注释Spring @Controller也作为Bean?

时间:2011-05-02 22:48:00

标签: java spring spring-mvc controller

带注释的Spring MVC控制器是否也可以使用@ Component / @ Service类型的注释进行注释,并且既可以用作控制器又可以用作bean?

4 个答案:

答案 0 :(得分:5)

编辑:更加重视软件设计方面,并更新到SpringV3的API链接

正如其他答案中所提到的,这不是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 :(得分:4)

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

它执行的任何可重用逻辑应该在专用的service layer中,而不是在控制器本身中

答案 2 :(得分:1)

不,听起来好像做得太多了。一个或另一个,不是两个。我不知道是否可能(我对此表示怀疑),但我确信这是不可取的。

答案 3 :(得分:0)

我认为您应该更多地了解Front Controller,MVC,DAO和Multitier架构等模式。