Spring里面的@Controller和@RestController注解的区别

@RestController相当于@Controller+@ResponseBody合在一起使用的效果。

@Controller注解:是spring框架提供的注解。使用@Controller注解标记的类是控制器类(控制层/表现层),这个控制层里面的方法可以去调用@Sercive标识的类(业务逻辑层),@Sercive标识的类可以继续调用使用@Resposity标记的接口实现类(Dao层/持久层)

MVC设计模式:M:模型层   V :视图层   C:控制层,M一般代表的是service和Dao; view一般代表的是页面如:jsp、html等;C代表控制器如springMVC中的controller等

MVC我们一般可以这样理解:JSP/HTML页面------控制器------数据逻辑处理------持久化

@Controller标记在一个类上面,还不能说这个类是springMVC的控制器,这个时候spring还不认识它,需要将这个控制器交给spring来管理。需要在applicationContext.xml文件里面配置如下 扫描器:

<context:component-scan base-package="com.baidu">
</context:component-scan>

这样配置后,上面的扫描器可以扫描“com.baidu”包和它子包下面所有带有@Component @Service @Controller @Resposity等组件,并把它们加到IOC容器中,由IOC容器管理。

@Controller标记在一个类上面,这个类就是一个SpringMVC的Controller类,分发处理器会扫描使用该注解的类的方法,并检测该方法是否使用了@RequestMapping注解。@Controller只是定义了一个控制器类,而使用@RequestMapping注解的方法才是处理请求的处理器。

@Controller
public class HospitalController {
 //注入Service服务对象
 @Autowired
 private HospitalService hospitalService;
 
 
 @RequestMapping(method = RequestMethod.POST, value = "/findAllHospital")
 @ResponseBody
 public Map findAllHospital(final HttpServletRequest request ,
 @RequestBody Map parmMap , HttpServletResponse response){
  
  Map map=parmMap ;//@RequestBody注解原因,系统会自动把request数据变成parmMap 
  ........
  ........
  return map;
   
 } 
  
 }

用@Controller定义了一个控制器类

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

用@ReponseBody标记Controller类中的方法。把return的结果变成JSON对象返回。如果没有这个注解,这个方法只能返回要跳转的路径即HEML/JSP页面,有了这个注解,可以不跳转页面只返回JSON数据。

二、@RestController注解

@RestController也是Spring的注解,@RestController相当于@Controller+@ResponseBody合在一起使用的效果。

Controller类中的方法返回值默认是json对象,也就是相当于@Controller里面的方法上面添加了@ResponseBody,

@RestController
public class HospitalController {
 //注入Service服务对象
 @Autowired
 private HospitalService hospitalService;
 
 
 @RequestMapping(method = RequestMethod.POST, value = "/findAllHospital")
 //方法上面可以不需要@ResponseBody注解,因为类上面用的是@RestController注解
 public Map findAllHospital(final HttpServletRequest request ,
 @RequestBody Map parmMap , HttpServletResponse response){
  
  Map map=parmMap ;//@RequestBody注解原因,系统会自动把request数据变成parmMap 
  ........
  ........
  return map;
   
 } 
  
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值