2026/4/15 8:01:26
网站建设
项目流程
美食网站设计的代码,wordpress推荐配置,关于单位建设网站的申请,公司管理系统的设计与实现Spring Boot 核心注解实战教程
你是否在使用 Spring Boot 开发时#xff0c;对着一堆注解不知所措#xff1f;不清楚它们各自的职责、该在什么场景下使用#xff1f;这篇教程将通过可直接运行的完整案例#xff0c;带你吃透 Spring Boot 核心注解的作用与使用方式#xf…Spring Boot 核心注解实战教程你是否在使用 Spring Boot 开发时对着一堆注解不知所措不清楚它们各自的职责、该在什么场景下使用这篇教程将通过可直接运行的完整案例带你吃透 Spring Boot 核心注解的作用与使用方式让你真正做到学以致用。在开始之前你需对注解有初步认识希望Java | 一文读懂Java注解从生活标签到代码魔法可以帮到你。一、教程概述我们将先逐个拆解核心注解的作用再搭建一个完整的 Spring Boot 3 Web 项目把这些注解串联起来实战使用最终实现一个支持跨域的用户信息查询与新增接口。技术前置JDK 17 及以上Spring Boot 3 最低要求 JDK 17Maven 3.6 及以上Spring Boot 3.2.x稳定版本教程使用 3.2.1二、核心注解作用详解1.SpringBootApplication作用Spring Boot 项目的入口注解用于标记主启动类。它是一个复合注解整合了Configuration配置类标记、EnableAutoConfiguration自动配置、ComponentScan组件扫描三个注解的功能无需手动配置这三个注解即可开启 Spring Boot 3 的核心特性。使用场景唯一作用就是标注在 Spring Boot 项目的主类上作为项目启动的入口标识。2.Configuration作用标记一个类为Spring 配置类相当于传统 Spring 中的applicationContext.xml配置文件。在该类中可以通过Bean注解将自定义对象注入到 Spring 容器中交由 Spring 统一管理单例默认。使用场景需要手动配置自定义 Bean如工具类、第三方服务客户端等时使用。3.Autowired作用实现自动依赖注入Spring 会自动从容器中查找对应的 Bean 实例并注入到当前类的字段、构造方法或 setter 方法中无需手动创建对象实现解耦。使用场景当一个类需要依赖另一个被 Spring 管理的 Bean 时如 Service 依赖 Repository、Controller 依赖 Service使用该注解自动注入。4.Controller作用标记一个类为Spring MVC 控制器类负责接收前端发送的请求进行请求分发和业务逻辑处理。默认情况下该注解标记的方法返回值是视图名称用于页面跳转。使用场景传统前后端不分离项目需要返回页面时标记控制器类。5.RestController作用复合注解整合了Controller和ResponseBody。标记该注解的类所有方法的返回值都会直接转换为 JSON/XML 格式的数据响应给前端而不是视图名称。使用场景前后端分离项目前端通过 Ajax/axios 请求数据时标记 API 接口控制器类最常用。6.ResponseBody作用将方法的返回值转换为 JSON/XML 格式的响应体直接返回给前端而不进行视图解析和页面跳转。使用场景在Controller标记的类中若某个方法需要返回数据而非页面时可在该方法上添加此注解补充Controller的功能。7.GetMapping作用用于映射GET 类型的 HTTP 请求是RequestMapping(method RequestMethod.GET)的简化写法。指定前端请求的 URL 路径当前端以 GET 方式请求该路径时对应的方法会处理请求。使用场景查询数据如查询用户列表、查询单个用户信息时使用GET 请求具有幂等性。8.PostMapping作用用于映射POST 类型的 HTTP 请求是RequestMapping(method RequestMethod.POST)的简化写法。使用场景新增数据如新增用户、新增订单、提交表单非幂等操作时使用。9.RequestBody作用将前端发送的JSON/XML 格式的请求体数据自动绑定到后端方法的参数对象中需保证请求体字段与参数对象属性名一致支持驼峰命名匹配。使用场景前后端分离项目中前端通过 POST/PUT 等方式提交 JSON 格式数据时用于接收请求体数据。10.CrossOrigin作用解决跨域请求问题当前端项目与后端项目不在同一域名、端口或协议时会出现跨域拦截。该注解可标注在类上所有方法生效或方法上单个方法生效。使用场景前后端分离项目如前端 Vue 项目部署在http://localhost:8080后端 Spring Boot 项目部署在http://localhost:9090需要允许前端跨域请求时使用。三、完整实战案例步骤 1创建 Maven 项目添加依赖在pom.xml中添加 Spring Boot 3 Web 核心依赖Maven 会自动管理 Spring Boot 3 相关依赖版本。?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion!-- Spring Boot 3 父工程依赖 --parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.2.1/versionrelativePath//parentgroupIdcom.example/groupIdartifactIdspringboot3-annotation-demo/artifactIdversion1.0-SNAPSHOT/versionpropertiesjava.version17/java.version/properties!-- 核心依赖Spring Boot 3 Web --dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependencies!-- Spring Boot 3 打包插件 --buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion3.2.1/version/plugin/plugins/build/project步骤 2编写主启动类使用SpringBootApplication创建com.example.AnnotationDemoApplication类作为 Spring Boot 3 项目入口使用SpringBootApplication注解标记。packagecom.example;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;/** * Spring Boot 3 主启动类 * SpringBootApplication入口注解整合 Configuration、EnableAutoConfiguration、ComponentScan */SpringBootApplicationpublicclassAnnotationDemoApplication{publicstaticvoidmain(String[]args){// 启动 Spring Boot 3 项目SpringApplication.run(AnnotationDemoApplication.class,args);System.out.println(Spring Boot 3 项目启动成功访问地址http://localhost:8080);}}步骤 3编写配置类使用Configuration创建com.example.config.UserConfig类作为配置类通过Configuration标记并用Bean注入一个工具类 Bean。packagecom.example.config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;/** * 自定义配置类 * Configuration标记为 Spring 3 配置类替代传统 xml 配置 */ConfigurationpublicclassUserConfig{/** * Bean将方法返回值注入到 Spring 容器中Bean 名称默认是方法名 * 此处注入一个用户编号生成工具 Bean */BeanpublicUserIdGeneratoruserIdGenerator(){returnnewUserIdGenerator();}/** * 自定义用户编号生成工具类 */publicstaticclassUserIdGenerator{privatestaticlongid1000L;// 生成自增用户编号publiclonggenerateId(){returnid;}}}步骤 4编写用户实体类创建com.example.entity.User类用于接收和返回用户数据兼容 Spring Boot 3 的 JSON 序列化/反序列化。packagecom.example.entity;/** * 用户实体类 * 用于封装用户信息对应前端请求体和后端响应体数据 */publicclassUser{privateLongid;// 用户编号privateStringusername;// 用户名privateIntegerage;// 年龄privateStringemail;// 邮箱// 无参构造器RequestBody 绑定数据时必须提供Spring Boot 3 严格要求publicUser(){}// 有参构造器publicUser(Longid,Stringusername,Integerage,Stringemail){this.idid;this.usernameusername;this.ageage;this.emailemail;}// Getter 和 Setter 方法必须提供否则 JSON 序列化/反序列化失败publicLonggetId(){returnid;}publicvoidsetId(Longid){this.idid;}publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.usernameusername;}publicIntegergetAge(){returnage;}publicvoidsetAge(Integerage){this.ageage;}publicStringgetEmail(){returnemail;}publicvoidsetEmail(Stringemail){this.emailemail;}// toString 方法便于打印日志OverridepublicStringtoString(){returnUser{idid, usernameusername\, ageage, emailemail\};}}步骤 5编写服务层使用Autowired创建com.example.service.UserService类用于处理业务逻辑通过Autowired注入配置类中的 Bean兼容 Spring Boot 3 的依赖注入机制。packagecom.example.service;importcom.example.config.UserConfig;importcom.example.entity.User;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importjava.util.HashMap;importjava.util.Map;/** * 用户服务层 * Service标记为 Spring 3 服务层 Bean会被 ComponentScan 扫描并注入容器 */ServicepublicclassUserService{// 模拟用户数据库存储privatestaticMapLong,UseruserMapnewHashMap();/** * Autowired自动注入 Spring 容器中的 UserIdGenerator Bean * Spring Boot 3 支持字段注入、构造器注入推荐、setter 注入 */AutowiredprivateUserConfig.UserIdGeneratoruserIdGenerator;/** * 新增用户 * param user 前端传入的用户信息不含 id * return 新增后的完整用户信息包含自动生成的 id */publicUseraddUser(Useruser){// 生成自增用户编号longuserIduserIdGenerator.generateId();user.setId(userId);// 存入模拟数据库userMap.put(userId,user);returnuser;}/** * 根据用户编号查询用户 * param userId 用户编号 * return 对应的用户信息 */publicUsergetUserById(LonguserId){returnuserMap.get(userId);}}步骤 6编写控制器层使用 Web 相关注解创建com.example.controller.UserController类作为 API 接口层使用 Spring Boot 3 支持的 Web 注解处理前端请求。packagecom.example.controller;importcom.example.entity.User;importcom.example.service.UserService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.*;/** * 用户接口控制器 * RestController复合注解Controller ResponseBody所有方法返回 JSON 数据 * CrossOrigin允许跨域请求标注在类上表示所有方法都支持跨域 */RestControllerCrossOrigin(origins*)// 允许所有域名跨域开发环境使用生产环境可指定具体域名RequestMapping(/api/user)// 统一接口前缀publicclassUserController{/** * Autowired自动注入 UserService Bean */AutowiredprivateUserServiceuserService;/** * 新增用户接口 * PostMapping映射 POST 请求路径为 /add完整路径/api/user/add * RequestBody将前端 JSON 请求体绑定到 User 参数对象 */PostMapping(/add)publicUseraddUser(RequestBodyUseruser){System.out.println(接收前端新增用户请求user);UsernewUseruserService.addUser(user);System.out.println(新增用户成功newUser);returnnewUser;}/** * 根据用户编号查询用户接口 * GetMapping映射 GET 请求路径为 /get/{userId}完整路径/api/user/get/{userId} * PathVariable获取 URL 路径中的 userId 参数 */GetMapping(/get/{userId})publicUsergetUserById(PathVariableLonguserId){System.out.println(接收前端查询用户请求用户编号userId);UseruseruserService.getUserById(userId);System.out.println(查询用户结果user);returnuser;}/** * 演示 Controller ResponseBody 组合使用 * 若使用 Controller 注解单个方法返回 JSON 需添加 ResponseBody */// Controller// RequestMapping(/api/user)// public class TestController {// Autowired// private UserService userService;//// GetMapping(/get/{userId})// ResponseBody// public User getUserById(PathVariable Long userId) {// return userService.getUserById(userId);// }// }}四、运行与测试步骤 1启动项目确保你的开发环境已配置 JDK 17 及以上运行AnnotationDemoApplication类的main方法控制台输出Spring Boot 3 项目启动成功访问地址http://localhost:8080即表示启动成功步骤 2测试接口两种方式可选方式 1使用 Postman 测试测试新增用户接口POST 请求请求地址http://localhost:8080/api/user/add请求方式POST请求头Content-Type: application/json请求体JSON 格式{username:张三,age:25,email:zhangsanexample.com}响应结果自动生成 id1000{id:1000,username:张三,age:25,email:zhangsanexample.com}测试查询用户接口GET 请求请求地址http://localhost:8080/api/user/get/1000请求方式GET响应结果{id:1000,username:张三,age:25,email:zhangsanexample.com}方式 2使用 curl 命令测试新增用户终端执行curl-XPOST-HContent-Type: application/json-d{username:李四,age:28,email:lisiexample.com}http://localhost:8080/api/user/add查询用户终端执行curlhttp://localhost:8080/api/user/get/1001步骤 3验证注解效果SpringBootApplication成功启动 Spring Boot 3 项目无需额外配置ConfigurationBean成功注入UserIdGenerator工具类实现 id 自增Autowired成功注入UserIdGenerator和UserService无需手动创建对象RestController接口直接返回 JSON 数据无需页面跳转PostMappingRequestBody成功接收 JSON 请求体新增用户GetMapping成功接收 GET 请求查询用户信息CrossOrigin前端跨域请求时无拦截可通过 Vue/React 项目测试ResponseBody若将RestController替换为Controller添加该注解后同样返回 JSON 数据。五、总结通过本教程你已经掌握了 Spring Boot 3 核心注解的核心作用与实战用法项目入口SpringBootApplicationSpring Boot 3 主启动类必备配置管理Configuration自定义 Bean 注入替代 xml 配置依赖注入Autowired自动获取 Spring 容器中的 Bean实现解耦Web 控制器Controller返回页面、RestController返回 JSON前后端分离首选数据响应ResponseBody将方法返回值转为 JSON 格式请求映射GetMapping查询操作、PostMapping新增操作数据接收RequestBody接收 JSON 格式请求体跨域解决CrossOrigin允许前端跨域请求。所有代码均基于 Spring Boot 3 构建可直接复制运行你可以在此基础上扩展修改用户、删除用户等接口进一步巩固注解的使用。