一文掌握 Spring Boot 中最常用的 20 个注解,涵盖开发、配置、Web、数据库、测试等场景,配合示例讲解,一站式掌握!


📌 一、核心配置类注解

1. @SpringBootApplication

  • 作用:标记为 Spring Boot 应用的入口类,包含了 @Configuration@EnableAutoConfiguration@ComponentScan
  • 使用场景:主启动类上唯一标注一次。
@SpringBootApplication
public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class, args);}
}

🧩 二、组件注册相关注解

2. @Component

  • 作用:声明一个组件,交由 Spring 容器管理。
  • 使用场景:普通工具类、服务类等。
@Component
public class MyUtil {// ...
}

3. @Service

  • 作用:声明业务逻辑层组件。
  • 区别:语义上表示“服务类”,本质还是 @Component
@Service
public class UserService {// ...
}

4. @Repository

  • 作用:声明数据访问层组件,并支持自动异常转换。
  • 使用场景:操作数据库的 DAO 类。
@Repository
public class UserDao {// ...
}

5. @Controller

  • 作用:声明控制器类,处理前端请求。
  • 配套注解:配合 @RequestMapping@GetMapping 等使用。
@Controller
public class HomeController {@GetMapping("/")public String home() {return "index";}
}

6. @RestController

  • 作用:相当于 @Controller + @ResponseBody,返回 JSON 数据。
  • 使用场景:用于 RESTful API。
@RestController
@RequestMapping("/api")
public class UserController {@GetMapping("/users")public List<User> getUsers() {return userService.getAll();}
}

🌐 三、请求映射注解

7. @RequestMapping

  • 作用:用于类或方法上,通用映射。
  • 支持:GET、POST、PUT、DELETE等方式。
@RequestMapping(value = "/user", method = RequestMethod.GET)
public User getUser() {return user;
}

8. @GetMapping / @PostMapping / @PutMapping / @DeleteMapping

  • 作用:简化的 HTTP 方法映射注解。
  • 建议:优先使用这些更语义化的注解。
@GetMapping("/user/{id}")
public User findById(@PathVariable Long id) {return userService.find(id);
}

💾 四、依赖注入注解

9. @Autowired

  • 作用:自动注入 Spring 管理的 Bean。
  • 推荐:构造器注入代替字段注入。
@Autowired
private UserService userService;

10. @Qualifier

  • 作用:解决多个 Bean 注入时的冲突。
  • 配合@Autowired 使用。
@Autowired
@Qualifier("myImpl")
private MyService service;

🏷️ 五、参数绑定注解

11. @RequestParam

  • 作用:绑定 URL 查询参数。
  • 默认:支持设置是否必须。
@GetMapping("/search")
public List<User> search(@RequestParam String keyword) {return userService.search(keyword);
}

12. @PathVariable

  • 作用:绑定路径中的变量。
@GetMapping("/user/{id}")
public User getUser(@PathVariable Long id) {return userService.getById(id);
}

13. @RequestBody

  • 作用:接收 JSON 数据,反序列化为对象。
@PostMapping("/user")
public void saveUser(@RequestBody User user) {userService.save(user);
}

🔒 六、配置与环境注解

14. @Value

  • 作用:读取 application.yml.properties 中的配置项。
@Value("${server.port}")
private int port;

15. @Configuration

  • 作用:标记为配置类,等价于 XML 配置。
@Configuration
public class AppConfig {@Beanpublic MyBean myBean() {return new MyBean();}
}

16. @Bean

  • 作用:向 Spring 容器注册一个 Bean。
  • 配合@Configuration 使用。
@Bean
public RestTemplate restTemplate() {return new RestTemplate();
}

🧪 七、测试相关注解

17. @SpringBootTest

  • 作用:用于 Spring Boot 的集成测试。
@SpringBootTest
public class UserServiceTest {@Autowiredprivate UserService userService;
}

18. @MockBean

  • 作用:用于测试中替换某个 Bean,通常用于 Mock。
@MockBean
private UserRepository userRepository;

✨ 八、数据校验注解(JSR-303)

19. @Valid / @Validated

  • 作用:用于校验请求参数是否合法。
  • 配套注解:配合 @NotNull@Size 等使用。
@PostMapping("/register")
public void register(@Valid @RequestBody User user) {// ...
}

🔄 九、事务管理注解

20. @Transactional

  • 作用:开启事务。
  • 常用属性rollbackFor, readOnly, propagation
@Transactional(rollbackFor = Exception.class)
public void saveData() {// ...
}

✅ 总结表格:注解速查表

注解类型场景特点
@SpringBootApplication启动注解启动类三合一复合注解
@Component通用组件工具类等可被扫描
@Service业务组件Service 层本质是 @Component
@RepositoryDAO组件数据访问自动异常封装
@ControllerWeb 控制器页面跳转搭配模板引擎
@RestControllerAPI 控制器返回 JSON= @Controller + @ResponseBody
@Autowired注入自动注入构造/字段均可
@RequestMapping请求映射多 HTTP 方法可用于类/方法
@GetMapping请求映射精准 HTTP 方法推荐使用
@Value配置读取yml、prop 值注入字符串解析
@Transactional事务管理Service 层原子性保障
@Bean手动注册第三方类自定义 Bean
@Valid / @Validated参数校验表单、实体搭配校验注解
@SpringBootTest测试注解单元/集成测试提供完整容器
@MockBean测试 Mock替换 Bean使用 Mockito

📘 建议收藏:这些注解是你开发 Spring Boot 项目的“基本功”,越熟练越高效!

如果你觉得有帮助,别忘了点赞、收藏和分享~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/91946.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/91946.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/91946.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【工具变量】地级市城市包容性绿色增长数据(2011-2023年)

城市包容性绿色增长是指在推动城市经济增长的过程中&#xff0c;兼顾环境可持续性、社会公平和包容性发展的理念与实践。它强调在实现绿色转型和低碳发展的同时&#xff0c;保障社会各群体&#xff0c;特别是弱势群体的利益与参与权利&#xff0c;确保增长成果能够公平共享 本…

深入理解React Hooks:从使用到原理

4. 源码解析类:《深入理解React Hooks:从使用到原理》 # 深入理解React Hooks:从使用到原理🔥 **背景**: - Hooks解决了Class组件的哪些问题? - 为什么不能在循环/条件中调用Hooks?🔍 **核心原理**:### 1. Hooks链表 React内部维护一个单向链表:fiber.memoizedSta…

【云原生】Docker 部署 Elasticsearch 9 操作详解

目录 一、前言 二、Elasticsearch 9 新特性介绍 2.1 基于 Lucene 10 重大升级 2.2 Better Binary Quantization(BBQ) 2.3 Elastic Distributions of OpenTelemetry(EDOT) 2.4 LLM 可观测性 2.5 攻击发现与自动导入 2.6 ES|QL 增强 2.7 语义检索 三、基于Docker部署…

uview-ui使用u-search搜索框

1、效果图 2、带地址搜索框&#xff0c;在微信小程序线上需要开启地图定位接口&#xff0c;若没有权限则显示不了城市名&#xff0c;注意事项参考uniapp相关地图 API调用-CSDN博客 <template><view><u-sticky offset-top"-1"><u-search v-mode…

Elasticsearch+Logstash+Kibana部署

目录 一、实验准备 1.下载安装 2.下载java 2.同步主机系统时间 二、部署 1.部署elasticsearch 修改 /etc/elasticsearch/elasticsearch.yml 配置文件 修改 /etc/hosts/ 文件 启动elasticsearch 查看是否启动进程netstat -antptu | grep java 2.部署logstash 进入/et…

TEngine学习

关于静态类中的静态变量赋值&#xff1a; public static class ActorEventDefine{public static readonly int ScoreChange RuntimeId.ToRuntimeId("ActorEventDefine.ScoreChange");public static readonly int GameOver RuntimeId.ToRuntimeId("ActorEventD…

猎板:在 5G 与 AI 时代,印制线路板如何满足高性能需求

5G 与 AI 技术的深度融合&#xff0c;推动电子设备向高速传输、高算力、高集成方向发展&#xff0c;印制线路板&#xff08;PCB&#xff09;作为核心载体&#xff0c;其性能直接决定终端设备的运行效率与可靠性。猎板 PCB 聚焦 5G 通信的高频需求与 AI 算力的密集需求&#xff…

教你如何借助AI精读文献

目录1. 原文2. 对文献有一个快速的理解3. 专业术语解读4. 解答疑问5. 借助AI翻译摘要和引言部分5.1 **摘要 (Abstract)**5.2 **引言 (Introduction)**6. 介绍论文中的“Stack-Propagation”7. 查阅论文里的参考文献&#xff0c;看看他是如何在Introduction中引述研究进展文献&a…

FastAdmin框架超级管理员密码重置与常规admin安全机制解析-卓伊凡|大东家

FastAdmin框架超级管理员密码重置与常规admin安全机制解析-卓伊凡|大东家我们可以看到admin账户是不允许直接修改的&#xff0c;这也是目前fastadmin 框架不允许的&#xff0c;那么如何处理一、FastAdmin超级管理员密码重置方法当FastAdmin的超级管理员密码忘记或需要重置时&am…

我做的基础服务项目,是如何实现 API 安全与限流的(短信、邮件、文件上传、钉钉通知)

我做的基础服务项目&#xff0c;是如何实现 API 安全与限流的&#xff08;短信、邮件、文件上传、钉钉通知&#xff09;一、背景 最近我做了一个基础服务项目&#xff0c;主要对外提供短信、邮件、文件上传和钉钉通知等基础功能。这些接口是多个业务系统都要调用的&#xff0c;…

(Python)类和类的方法(基础教程介绍)(Python基础教程)

源代码&#xff1a;class Students:stats"大学"def __init__(self,name,age,sex,credit):self.namenameself.ageageself.sexsexself.creditcreditdef tell(self):return f"{self.name}说&#xff1a;你好"class Teachers(Students):stats"教师"d…

网络智能体研究综述

网络智能体研究综述1.什么是网络智能体1.1.核心特征1.2.分类方式1.2.1.按功能定位1.2.2. 按网络结构1.2.3.按应用场景1.3.典型应用场景1.4.技术基础1.5.发展趋势与挑战1.5.1.发展趋势1.5.2.核心挑战2.网络智能体盘点3.阿里的WebSailor3.1.WebSailor的主要功能和技术特点3.2.技术…

git 介绍与使用教程

Git 是一个 分布式版本控制系统&#xff0c;每个开发者都有一个完整的本地仓库&#xff08;包含完整历史记录&#xff09;&#xff0c;而远程仓库&#xff08;如 GitHub、GitLab、Gitee&#xff09;是团队共享的中央仓库。它们的关系如下&#xff1a;本地仓库&#xff08;Local…

[AI风堇]基于ChatGPT3.5+科大讯飞录音转文字API+GPT-SOVITS的模拟情感实时语音对话项目

[AI风堇]最近利用工作日的晚间和周末时间&#xff0c;我完成了一个有趣的Python编程小项目。这个项目的灵感来源于上个月在B站看到的"科技怪咖"UP主分享的一个视频&#xff0c;视频中展示了一个名为"DataMagic"的自动化数据处理工具&#xff0c;能够智能分…

物联网-规则引擎的定义

构建物联网系统中的规则引擎是一个系统性的工程&#xff0c;它需要处理来自海量设备的实时数据流&#xff0c;并根据预定义的逻辑触发动作。以下是构建一个高效、可靠、可扩展的物联网规则引擎的关键步骤和考虑因素&#xff1a; 核心目标 实时性&#xff1a; 快速处理设备事件并…

SIMATIC WinCC Unified 使用 KPI 优化流程

大家好&#xff0c;我是东哥说-MES基本知识 33.1 KPI组态简介现有工厂结构表示在面向对象的组态中定义标准化 KPI 概念的起点。 可通过在工厂视图中用作实例的工厂对象类型来映射工厂的各组件。在“性能指 标”(Performance indicators) 全局编辑器中&#xff0c;可定义全局操作…

机器学习-多重线性回归和逻辑回归

目录 1. 多重线性回归 1.1 多元线性回归 1.2 向量化&#xff08;矢量化&#xff09; 1.3 多元线性回归的梯度下降算法 1.4 正规方程 2. 特征缩放 2.1 特征缩放 2.2 检查梯度下降是否收敛 2.3 学习率的选择 2.4 特征工程 2.5 多项式回归 3. 逻辑回归 3.1 Motivatio…

编程思想:程序自身的模型/函数模型硬件标准如何实现

前言前面提到过写程序的过程:根据各种需求,构建程序模型(逻辑模型),再用代码实现.本贴关于程序自身的模型以及函数模型,以及推导硬件标准从逻辑到代码的思路.程序自身的模型如图应用APP接受输入---鼠标动作,键盘输入的字符等,得到结果---画面,显示数据等.工具包括框架和编程语言…

基于JAVA Spring Boot物理实验考核系统设计与实现 (文档+源码)

目录 一.研究目的 二.需求分析 三.数据库设计 四.系统页面展示 五.源码获取方式 一.研究目的 信息数据的处理完全依赖人工进行操作&#xff0c;会耗费大量的人工成本&#xff0c;特别是面对大量的数据信息时&#xff0c;传统人工操作不仅不能对数据的出错率进行保证&…

【国内电子数据取证厂商龙信科技】安卓镜像提取与解析

前言随着智能手机更新迭代越来越快&#xff0c;手机厂家对手机系统安全性要求也越来越严格。系统安全性提高对公民的隐私是一件好事&#xff0c;但是对于取证行业确实一个大难题&#xff0c;手机系统安全性的提高意味着我们能对犯罪嫌疑人手机的提取数据和恢复数据越来越少&…