高级java每日一道面试题-2025年01月24日-框架篇[SpringMVC篇]-SpringMVC常用的注解有哪些?

server/2025/2/2 2:52:23/

如果有遗漏,评论区告诉我进行补充

SpringMVC_1">面试官: SpringMVC常用的注解有哪些?

我回答:

一、核心注解详解

1. @Controller
  • 作用:将一个普通的Java类标记为处理请求的控制器。

  • 应用场景:在Spring MVC中起到了路由请求和处理业务逻辑的作用,并注册为Spring容器的Bean。

  • 使用方式:通过组件扫描或显式配置等方式,让Spring能够自动检测到这个控制器并进行实例化和管理。

    java">@Controller
    public class MyController {// Handler methods here
    }
    
2. @RequestMapping
  • 作用:用于将HTTP请求映射到控制器类或处理请求的方法上。

  • 属性

    • value:映射的URL路径。
    • method:指定请求的HTTP方法类型(如GET、POST等)。
    • consumes:指定请求提交的内容类型。
    • produces:指定返回的内容类型。
  • 使用方式:可以修饰类,也可以修饰方法。当同时修饰类和方法时,访问地址是类路径+方法路径。

    java">@RequestMapping(value = "/users", method = RequestMethod.GET)
    public String getUsers() {return "userList";
    }
    
3. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping
  • 作用:这些注解是@RequestMapping的简化形式,分别用于处理HTTP的GET、POST、PUT、DELETE、PATCH请求。

  • 使用场景

    • @GetMapping:用于获取资源。
    • @PostMapping:用于提交资源。
    • @PutMapping:通常用于更新资源,但有时也用于添加资源。
    • @DeleteMapping:用于删除资源。
    • @PatchMapping:用于对资源进行部分更新。
    java">@GetMapping("/users/{id}")
    public User getUserById(@PathVariable Long id) {return userService.getUser(id);
    }@PostMapping("/users")
    public User createUser(@RequestBody User user) {return userService.saveUser(user);
    }
    
4. @RequestParam
  • 作用:用于将请求参数绑定到处理请求的方法的参数上。

  • 属性

    • value:请求参数的名称。
    • required:指定参数是否必需,默认为true
    • defaultValue:指定参数的默认值。
  • 使用场景:当请求中包含与@RequestParam声明的名称一致的参数时,Spring MVC会自动将参数值绑定到方法参数上。

    java">@GetMapping("/search")
    public List<Item> searchItems(@RequestParam("query") String query) {return itemService.search(query);
    }
    
5. @PathVariable
  • 作用:用于将请求路径中的变量绑定到处理请求的方法的参数上。

  • 使用场景:在URL路径中使用花括号{}包围变量名,Spring MVC会自动从路径中提取对应名称的变量值,并将其绑定到方法参数上。

    java">@GetMapping("/items/{id}")
    public Item getItemById(@PathVariable("id") Long id) {return itemService.getItem(id);
    }
    
6. @RequestBody
  • 作用:用于接收JSON或其他类型的请求体数据,并将其转换为Java对象。

  • 使用场景:当客户端发送POST或PUT请求,且请求体中包含JSON数据时,可以使用@RequestBody将请求体数据转换为Java对象进行处理。

    java">@PostMapping("/items")
    public Item addItem(@RequestBody Item item) {return itemService.addItem(item);
    }
    
7. @ResponseBody
  • 作用:用于将方法的返回值作为HTTP响应体返回给客户端。

  • 使用场景:当控制器方法的返回值需要直接作为响应体返回时,可以使用@ResponseBody注解。它通常与@RestController注解配合使用,后者是@Controller@ResponseBody的组合注解。

    java">@GetMapping("/api/data")
    @ResponseBody
    public String getData() {return "Some Data";
    }
    

二、其他重要注解

8. @SessionAttribute, @CookieValue, @RequestHeader, @RequestPart
  • @SessionAttribute:用于获取Session中的属性值。

  • @CookieValue:用于从Cookie中获取值。

  • @RequestHeader:用于获取HTTP请求头中的值。

  • @RequestPart:用于处理文件上传等multipart/form-data类型的请求。

    java">@PostMapping("/upload")
    public ResponseEntity<String> handleFileUpload(@RequestPart("file") MultipartFile file) {// Handle file upload logicreturn new ResponseEntity<>("File uploaded successfully", HttpStatus.OK);
    }
    
9. @ControllerAdvice, @ModelAttribute
  • @ControllerAdvice:用于定义全局的异常处理、数据绑定等逻辑。它可以配合@ExceptionHandler@InitBinder等注解使用。

  • @ModelAttribute:用于在方法执行前将某个对象添加到Model中,以便在视图层中使用。它也可以用于方法参数上,表示该参数的值应该从Model中获取。

    java">@ControllerAdvice
    public class GlobalExceptionHandler {@ExceptionHandler(MyCustomException.class)public ResponseEntity<String> handleMyCustomException(MyCustomException ex) {return new ResponseEntity<>("Error: " + ex.getMessage(), HttpStatus.BAD_REQUEST);}
    }@ModelAttribute("user")
    public User addDefaultUser(Model model) {User user = new User();// Set default values for the user objectreturn user;
    }
    

三、总结

掌握Spring MVC常用注解不仅有助于简化Web应用程序的开发,还能展示你对Spring框架的理解和技术深度。理解每个注解的作用及其使用场景,在实际项目中合理运用这些注解,可以显著提高代码的可读性和维护性。

在面试中,除了熟悉这些注解的基本用法外,还应该能够解释它们的工作原理以及如何结合使用来解决复杂的业务需求。例如,知道如何通过组合使用@RequestMapping@PathVariable@RequestBody来构建RESTful API接口,或者如何利用@ExceptionHandler@ControllerAdvice来进行全局异常处理。

此外,了解Spring Boot中与Spring MVC相关的自动配置特性也很重要,因为这展示了你对现代Java Web开发工具链的全面理解。通过合理运用上述注解,可以有效地管理和优化Spring MVC项目,从而提高系统的整体性能和可靠性。

四、应用建议

  • 选择合适的注解:根据具体的业务需求选择最符合的注解,避免引入不必要的复杂度。
  • 了解注解背后的原理:不仅要会用,还要理解注解是如何工作的,这有助于在遇到问题时进行调试和优化。
  • 利用自定义注解:对于有特殊需求的情况,考虑创建自己的注解来简化代码逻辑。
  • 定期审查依赖:随着Spring版本的迭代,定期检查并更新注解及其相关依赖,确保项目使用的都是最新的稳定版本。

通过以上方法,可以有效地管理和优化Spring MVC项目中的注解使用,从而提高系统的整体性能和可靠性。


http://www.ppmy.cn/server/164233.html

相关文章

春节假期旅游热潮下,景区医疗安全如何全面升级?

随着旅游业的不断繁荣&#xff0c;春节假期期间&#xff0c;各大景区再次迎来了游客的高峰期。面对如此庞大的客流量&#xff0c;景区不仅要在服务接待上下功夫&#xff0c;更要将医疗安全保障工作提升到新的高度。那么&#xff0c;在旅游高峰期&#xff0c;景区应该如何有效应…

第04章 08 VTK Filter 的组成与运作原理

在 VTK&#xff08;Visualization Toolkit&#xff09;中&#xff0c;Filter 是处理和转换数据的核心组件。它们用于对输入数据进行各种操作&#xff0c;如几何变换、数据过滤、属性计算等&#xff0c;并生成新的输出数据。Filter 的组成与运作原理是 VTK 数据处理流程的关键。…

穿心莲内酯(andrographolide)生物合成CYP72-文献精读106

Two CYP72 enzymes function as Ent-labdane hydroxylases in the biosynthesis of andrographolide in Andrographis paniculata 两种CYP72酶在穿心莲&#xff08;Andrographis paniculata&#xff09;中作为Ent-labdane羟化酶&#xff0c;在穿心莲内酯&#xff08;andrograp…

2025年1月22日(网络编程)

系统信息&#xff1a; ubuntu 16.04LTS Raspberry Pi Zero 2W 系统版本&#xff1a; 2024-10-22-raspios-bullseye-armhf Python 版本&#xff1a;Python 3.9.2 已安装 pip3 支持拍摄 1080p 30 (1092*1080), 720p 60 (1280*720), 60/90 (640*480) 已安装 vim 已安装 git 学习…

2025美赛数学建模C题:奥运金牌榜,完整论文代码模型目前已经更新

2025美赛数学建模C题&#xff1a;奥运金牌榜&#xff0c;完整论文代码模型目前已经更新&#xff0c;获取见文末名片

golang命令大全4--测试与调试

Go 语言提供了一系列强大的工具和命令来帮助开发者进行代码的测试与性能调优。 1、go test 功能 go test是 Go 语言内置的测试工具&#xff0c;用于执行 Go 项目中的单元测试。它会查找当前包中所有以 _test.go 结尾的文件&#xff0c;运行其中定义的测试函数&#xff0c;并…

AnyThingLLM本地私有知识库搭建

***************************************************** 环境准备 操作系统&#xff1a;Windows11 内存&#xff1a;32GB RAM 存储&#xff1a;预留 300GB 可用空间 显存: 16G 网络: 100M带宽 前置准备: 已安装ollama环境 deepseek本地大模型 ***************************…

一个 windows 自动语音识别案列

一个 windows 自动语音识别案列 之前给写过一段很有意思的代码,今天分享给大家 ! 文章目录 一个 windows 自动语音识别案列前言一、需要安装一些python 库二、代码如下三,测试总结下前言 一、需要安装一些python 库 speech_recognition:这是一个用于语音识别的库。它可以…