Spring MVC中的@Controller注释和控制器类

时间:2015-04-30 10:03:30

标签: java spring spring-mvc

当我使用Spring 3.x时 在使用注释时,我很难知道我们要使用这个@Controller获取哪种类型的Controller类 参考

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/Controller.html

这些正在实现Controller类

AbstractController
AbstractUrlViewController
MultiActionController
ParameterizableViewController
ServletForwardingController
ServletWrappingController
UrlFilenameViewController
AbstractWizardFormController
SimpleFormController

但是当我们在Spring MVC中使用@Controller注释时 程序如何知道我们的@Controller注释正在实现 任何这些控制器,请任何人解释我

3 个答案:

答案 0 :(得分:3)

我认为你在这里忽略了这一点。在过去注册控制器的过程中,您的类必须已实现控制器接口并选择请求映射类型。有时您必须实现大量代码才能实现单个请求映射。

如今,当我们有注释时,模型已经改变了。我们可以为每个控制器类处理多个请求类型。因为在单个@Controller带注释的类中,我们可以处理许多请求映射。

Controller注释是一个专门的@Component,它告诉Spring它内部会找到@RequestMapping个处理程序。这些处理程序可用于返回Json,HTML或上传文件。

现在与同一模块连接的逻辑可以放在单个控制器类下,您可以更灵活地实现所需。其次@Controller使我们能够显着减少代码。

答案 1 :(得分:2)

您没有使用任何这些课程。您将Controller接口与注释混淆。

注释只是一个标记,表明您的bean是一个Spring Controller并且可以发送接收HTTP请求。 http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/stereotype/Controller.html

当Java语言中没有注释时,引入了Controller接口。

答案 2 :(得分:2)

  

我们要使用它来获取哪种类型的Controller类   @Controller?

@Controller注释是告诉Web容器这是带有@RequestMapping(URI)指定的URL的请求的控制器类。如果你使用@Controller注释你的类,你将不会获取任何类,你只需要在类中提供一个请求处理程序方法并使用@RequestMapping注释它,尽管控制器类也可以注释使用@RequestMapping,在这种情况下,只有类中的方法才能作为请求处理程序方法。

  

如何知道我们的@Controller注释正在实现任何一个   这些控制器?

您提到的类的名称正在实现 Controller接口,而不是@Controller注释正在实现任何内容。这些控制器类用于特定目的,因为它们的名称建议。

相关问题