@ controller, @RestController注解区别详解

  

  

@RestController注解相当于@ controller + @ResponseBody合在一起的作用。

  


  

  

@ controller是春天框架提供的注解。

  

@ controller标识的类,该类代表控制器类(控制层/表现层)。
  这里控制层里面的每个方法,都可以去调用@ service标识的类(业务逻辑层),@ service标识的类中的方法可以继续调用@Resposity标识的接口实现类(Dao层/持久层)。

  

【MVC设计模式:M(模型)指模型,V(视图)指视图层,C(控制器)指控制层。
  M代表模型一般指服务和刀;视图代表视图一般指页面如:jsp、html ftl等;C代表控制器,比如springMVC中的控制器或struts2中的行动。
  MVC其实我们正常理解应该是VMC: JSP/HTML页面数据→控制器→数据逻辑处理并持久化。
  但官方是MVC,所以我们按照MVC这么记住就对了。
  】

  

@ controller标记在一个类上还不能真正意义上说它就是SpringMVC的控制器,应为这个时候春天还不认识它,这个时候需要把这个控制器交给春来管理。用下面方式管理:
  

  

在applicationContext。xml文件里面配置如下扫描器

        & lt;上下文:component-scan基础包=癱om.baidu”比;   & lt;/背景:component-scan>      

上面的扫描器可以扫描“com.baidu”包和它子包下面的所有带有@ component, @ controller, @ service, @Resposity等组件,并把他们添加到国际奥委会容器中,由国际奥委会容器管理。

  

@ Controller用于标记在一个类上,使用它标记的类就是一个SpringMVC的控制器类,分发处理器会扫描使用该注解的类的方法,并检测该方法是否使用了@RequestMapping注解。
  

  

@ controller只是定义了一个控制器类,而使用@RequestMapping注解的方法才是处理请求的处理器。
  

        @ controller   公开课HospitalController {//注入服务服务对象   @ autowired   私人HospitalService HospitalService;         @RequestMapping(方法=RequestMethod。帖子,价值=" https://www.yisu.com/findAllHospital ")   @ResponseBody   公共地图findAllHospital(最终HttpServletRequest请求,   @RequestBody地图parmMap HttpServletResponse响应){      地图地图=parmMap;//@RequestBody注解原因,系统会自动把请求数据变成parmMap   ……   ……   返回地图;      }      }      

用@ controller定义一个控制器类,
  

  

用@RequestMapping给出外界访问方法的路径,或者说触发路径,触发条件。
  

  

用@ResponseBody标记控制器类中的方法。把返回的结果变成JSON对象返回。(如果没有这个注解,这个方法只能返回要跳转的路径即跳转的html/JSP页面。有这个注解,可以不跳转页面,只返回JSON数据)

  


  

  

@RestController也是春天框架提供的注解。(Spring4.0之后新增的)
  

  

@RestController注解相当于@ controller + @ResponseBody合在一起的作用。

  

控制器类中的方法返回值,默认是json对象,也就是相当于@ Controller里面的方法上添加了@ResponseBody
  如果方法返回值,需要跳转,那么方法的返回类型必须是视图或者ModelAndView。

        @RestController   公开课HospitalController {//注入服务服务对象   @ autowired   私人HospitalService HospitalService;         @RequestMapping(方法=RequestMethod。帖子,价值=" https://www.yisu.com/findAllHospital ")//方法上面可以不需要@ResponseBody注解,因为类上面用的是@RestController注解   公共地图findAllHospital(最终HttpServletRequest请求,   @RequestBody地图parmMap HttpServletResponse响应){      地图地图=parmMap;//@RequestBody注解原因,系统会自动把请求数据变成parmMap   ……   ……   返回地图;      }      }      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

@ controller, @RestController注解区别详解