首页 文章

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

提问于
浏览
3

当我使用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 回答

  • 2

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

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

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

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

  • 2

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

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

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

  • 3

    我们要使用这个@Controller获取哪种类型的Controller类?

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

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

    您提到的类的名称 are implementing Controller 接口,而不是 @Controller 注释正在实现任何内容 . 这些控制器类用于特定目的,正如其名称所示 .

相关问题