彻底弄懂Spring MVC常用注解
目录
[彻底弄懂Spring MVC常用注解](#彻底弄懂Spring MVC常用注解 "#%E5%BD%BB%E5%BA%95%E5%BC%84%E6%87%82Spring%20MVC%E5%B8%B8%E7%94%A8%E6%B3%A8%E8%A7%A3")
概述
这标题是为了蹭一下热点,本来想梳理一下mvc相关的注解,百度发现好多这类标题的文章,但是阅读之后发现讲的不是那么深入,于是决心自己来出一篇这样的文章,彻底深挖一下这个知识点。
Spring MVC应该是Java ee工程师每天都要写的代码,但是很多人从来不去深入的了解我们平时写的代码,我是一个比较喜欢思考的人,经常回去刨根问底的寻求一下答案,本文是我很早就想出的一篇,通过注解入手将围绕一下几个方面展开讲解,首先会展示这几个注解的源码,之后通过开发实例来进行讲解,结合实例来分析这几个注解的原理。
一、相关注解
如下所示是本文将展开讲解的注解的,大家分别可以在spring源码中找到:
1 、@RestController
2 、@Controller
3 、@RequestMapping
4 、@RequestParam
5 、@PathVariable
6 、@RequestPart
7 、@RequestBody
8 、@ResponseBody
9、 @Service
10、@Repository
11、@Component
@RestController
@Controller
编辑
@Service
@Repository
@Component
通过源码实现我们发现@RestController、@Controller 、@Service、@Repository都继承了父注解@Component,@Component 的作用是把普通pojo实例化到spring容器中,相当于配置文件中的,Spring会扫描加了@RestController、@Service、@Controller、@Repository、@Component注解的类,并把这些类纳入进spring容器中管理。
二、注解使用实例
接下来我将展示一个简单的实例如下:
上面是Java EE工程师日常开发过程中的模板代码,我们写了这么多年的代码,是否思考过为什么这样写就可以实现一套restful接口呢?本文将详细分析一下这里隐藏的技术实现原理。
首先,我们思考一下加了这些注解的作用是什么?
(1)@RestController和@Controller是用于定义控制器的两种常用注解;
@RequestMapping、@PostMapping、@GetMapping、@DeleteMapping、@PutMapping是用于处理HTTP请求映射,其中@PostMapping是一个组合注解,它是@RequestMapping(method = RequestMethod.POST)的缩写。它用于处理HTTP POST请求的方法,只能标注在方法上。使用@PostMapping注解的方法将仅响应POST请求,其他几个注解类似;
(2)前后端传参@RequestParam、@PathVariable、@RequestPart、@RequestBody
@RequestParam 用于从请求的查询参数(URL中的查询字符串部分)或表单数据中获取参数。例如,如果你有一个URL /user?id=123,你可以使用 @RequestParam 来获取 id 参数。
@PathVariable 用于从URL路径中提取变量。这种方法常用于RESTful API设计,其中URL的路径部分包含动态数据。例如,如果你有一个URL /user/{id},你可以使用 @PathVariable 来获取 {id}。
@RequestPart 用于处理多部分(Multipart)请求,这种请求允许在单个请求中发送多个部分,例如文件上传。它通常与 @RequestParam 结合使用,用于指定请求中的某个部分。这在处理文件上传或发送JSON和文件时非常有用。
@RequestBody:主要用于处理客户端发送的JSON或XML数据。例如,在用户注册或更新信息的场景中,客户端通过POST方法发送包含用户信息的JSON数据,服务器端使用@RequestBody注解自动将JSON数据转换为相应的Java对象。
@ResponseBody:主要用于将服务器的响应数据以JSON或XML格式返回给客户端。例如,在用户登录成功后,服务器返回包含用户信息的JSON数据,使用@ResponseBody注解将Java对象转换为JSON格式并返回给客户端。
(4)@Service注解明确标记一个类为服务层组件,通常包含业务逻辑。通过这种方式,开发人员可以清晰地理解该类的职责和作用。
(5)@Repository注解用于将一个类标识为数据访问层组件(Repository)。它通常用于与数据库交互的类,封装了数据访问逻辑。
(6)@Component是一个通用的注解,用于将一个类标识为组件(Component)。它是通用的注解,表示一个普通的Spring组件。被@Component注解标记的类将由Spring自动扫描并注册为Bean,可通过依赖注入等方式使用。
总结
本章全面梳理了springmvc日常开发中常用的注解,通过结合实例进行分析各注解的使用场景,并且讲解了各注解的原理和作用,大家可以通过本篇文章全面了解到mvc中的注解,结合自己的实践可以深入了解spring源码以及spring mvc的设计思想。希望本文对读者有所帮助。