想了解spring@Controller和@RestController注解的区别的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于spring中controller和service注解的相关
想了解spring @Controller 和 @RestController 注解的区别的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于spring中controller和service注解的相关问题,此外,我们还将为您介绍关于1.@Controller和@RestController的区别、@Controller 和 @RestController 区别是什么、@Controller、@RestController 注解区别详解、@Controller和@RestController有什么区别?的新知识。
本文目录一览:- spring @Controller 和 @RestController 注解的区别(spring中controller和service注解)
- 1.@Controller和@RestController的区别
- @Controller 和 @RestController 区别是什么
- @Controller、@RestController 注解区别详解
- @Controller和@RestController有什么区别?
spring @Controller 和 @RestController 注解的区别(spring中controller和service注解)
@Controller
弹簧和@RestController
注释之间的区别。
注释可以@Controller
同时用于 Web MVC 和 REST 应用程序吗?
如果是,我们如何区分它是 Web MVC 还是 REST 应用程序。
答案1
小编典典@Controller
用于将类标记为 Spring MVC Controller。@RestController
是一个方便的注解,它只是添加@Controller
和@ResponseBody
注解(参见:Javadoc)
所以以下两个控制器定义应该做同样的事情
@Controller@ResponseBodypublic class MyController { }@RestControllerpublic class MyRestController { }
1.@Controller和@RestController的区别
@Controller 和 @RestController 区别是什么
@RestController 在 Spring MVC 中就是 @Controller 和 @ResponseBody 注解的集合。
@RestController 注解是从 Spring 4.0 版本开始添加进来的,主要用于更加方便的构建 RESTful Web 服务。
@ResponseBody
该注解用于将 Controller 的方法返回的对象,通过适当的 HttpMessageConverter 转换为指定格式后,写入到 Response 对象的 body 数据区。使用此注解此次请求将不再走视图处理器,而是直接将此响应结果写入到输入流中,其效果等同于使用 response 对象输出指定格式的数据。
在 RESTful 的服务中,我们大部分情况是使用 JSON 为返回数据的,所以你可以直接使用 @RestController 替换掉 @Controller 和 @ResponseBody。
根据上面的解释,下面的 2 段代码是完全一样的:
@Controller @ResponseBody public class MVCController { .. your logic } @RestController public class RestFulController { .... your logic }
https://www.cwiki.us/display/SpringBootZH/questions/57939042
@Controller、@RestController 注解区别详解
@Controller、@RestController 注解区别:
@RestController 注解相当于 @Controller + @ResponseBody 合在一起的作用。
一、@Controller 注解
@Controller 是 Spring 框架提供的注解。
@Controller 标识的类,该类代表控制器类 (控制层 / 表现层)。
这里控制层里面的每个方法,都可以去调用 @Service 标识的类(业务逻辑层),@Service 标识的类中的方法可以继续调用 @Resposity 标识的接口实现类(Dao 层 / 持久层)。
【MVC 设计模式:M (model) 指模型,V (view) 指视图层,C (controller) 指控制层。
M 代表模型一般指 service 和 DAO;view 代表视图一般指页面 eg:jsp,html ftl 等;C 代表控制器,比如 springMVC 中的 controller 或 struts2 中的 action 。
MVC 其实我们正常理解应该是 VMC:JSP/HTML 页面数据–> 控制器–> 数据逻辑处理并持久化。
但官方是 MVC,所以我们按照 MVC 这么记住就对了。
】
@Controller 标记在一个类上还不能真正意义上说它就是 SpringMVC 的控制器,应为这个时候 Spring 还不认识它,这个时候需要把这个控制器交给 Spring 来管理。用下面方式管理:
在 applicationContext.xml 文件里面配置如下 扫描器
1
2
|
<
context:component-scan
base-package
=
"com.baidu"
>
</
context:component-scan
>
|
上面的扫描器可以扫描 "com.baidu" 包和它子包下面的所有带有 @Component、@Controller、@Service、@Resposity 等组件,并把他们添加到 IOC 容器中,由 IOC 容器管理。
@Controller 用于标记在一个类上,使用它标记的类就是一个 SpringMVC 的 Controller 类,分发处理器会扫描使用该注解的类的方法,并检测该方法是否使用了 @RequestMapping 注解。
@Controller 只是定义了一个控制器类,而使用 @RequestMapping 注解的方法才是处理请求的处理器。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
@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 给出外界访问方法的路径,或者说触发路径 ,触发条件。
用 @ResponseBody 标记 Controller 类中的方法。把 return 的结果变成 JSON 对象返回。(如果没有这个注解,这个方法只能返回要跳转的路径即跳转的 html/JSP 页面。有这个注解,可以不跳转页面,只返回 JSON 数据)
二、@RestController 注解
@RestController 也是 Spring 框架提供的注解。(Spring4.0 之后新增的)
@RestController 注解相当于 @Controller + @ResponseBody 合在一起的作用。
Controller 类中的方法返回值,默认是 json 对象,也就是相当于 @Controller 里面的方法上添加了 @ResponseBody
如果方法返回值,需要跳转,那么方法的返回类型必须是 View 或者 ModelAndView.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
@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;
}
}
|
@Controller和@RestController有什么区别?
首先说一下这两个注解的作用:
1、使用@Controller 注解在对应的方法上,视图解析器可以解析return 的jsp、html页面,并且跳转到相应页面(注解到类)。
2、使用@ResponseBody注解,则返回的是json(或者是你定义的String、Map类型)内容(注解到方法)。
明白了吧?就是说如果你要解析页面,用@Controller,如果你使用的Ajax获取一些数据,则使用@ResponseBody注解到方法上。
而@RestController就是@Controller 和 @ResponseBody 的合体。
我们今天的关于spring @Controller 和 @RestController 注解的区别和spring中controller和service注解的分享已经告一段落,感谢您的关注,如果您想了解更多关于1.@Controller和@RestController的区别、@Controller 和 @RestController 区别是什么、@Controller、@RestController 注解区别详解、@Controller和@RestController有什么区别?的相关信息,请在本站查询。
本文标签: