首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring Boot 注解大全,以及对应的用法

Spring Boot 注解大全,以及对应的用法

原创
作者头像
用户2695996
修改于 2025-06-06 10:02:57
修改于 2025-06-06 10:02:57
2390
举报
文章被收录于专栏:源码搭建源码搭建

Spring Boot 项目中,注解(Annotations)是提高代码可读性和维护性的关键工具。它们不仅简化了配置过程,还增强了代码的功能。本文将详细介绍一些常用的 Spring Boot 注解及其作用。

一、基础注解

1. @SpringBootApplication

这是 Spring Boot 应用程序的入口点,通常用于主类上。它包含了三个重要的注解:@Configuration@EnableAutoConfiguration@ComponentScan

  • 作用:标记一个类作为 Spring Boot 应用程序的启动类,并启用自动配置和组件扫描。
  • 示例java深色版本@SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }

2. @Configuration

用于定义一个类为配置类,允许在其中定义 Bean。

  • 作用:标识一个类为 Spring 配置类,可以在这个类中使用 @Bean 注解来定义 Bean。
  • 示例:java深色版本@Configuration public class AppConfig { @Bean public MyService myService() { return new MyServiceImpl(); } }

3. @Bean

用于方法级别,告诉 Spring 容器该方法返回的对象应该被注册为一个 Bean。

  • 作用:定义一个方法返回的对象作为 Spring 容器中的一个 Bean。
  • 示例:java深色版本@Bean public MyRepository myRepository() { return new MyRepositoryImpl(); }

二、组件扫描与依赖注入

4. @ComponentScan

用于指定 Spring 应该扫描哪些包以查找组件、服务等。

  • 作用:指定 Spring 应该扫描哪些包来查找组件、服务等。
  • 示例:java深色版本@SpringBootApplication @ComponentScan(basePackages = "com.example") public class MyApplication { // ... }

5. @Autowired

用于自动装配依赖项,可以在构造函数、字段或 setter 方法上使用。

  • 作用:自动注入所需的依赖项。
  • 示例:java深色版本@Service public class MyService { private final MyRepository repository; @Autowired public MyService(MyRepository repository) { this.repository = repository; } }

6. @Qualifier

当有多个相同类型的 Bean 时,使用 @Qualifier 来指定具体的 Bean。

  • 作用:指定注入哪个特定的 Bean。
  • 示例:java深色版本@Autowired @Qualifier("myCustomRepository") private MyRepository myRepository;

三、控制层相关注解

7. @RestController

组合了 @Controller@ResponseBody 注解,用于创建 RESTful Web 服务。

  • 作用:简化 REST 控制器的定义,所有返回值都会自动转换为 JSONXML
  • 示例:java深色版本@RestController public class UserController { @GetMapping("/users") public List<User> getAllUsers() { return userService.getAllUsers(); } }

8. @RequestMapping

用于映射 HTTP 请求到控制器处理方法上。

  • 作用:将 HTTP 请求映射到控制器的方法上。
  • 示例:java深色版本@RequestMapping("/api/v1/users") public ResponseEntity<List<User>> getUsers() { return ResponseEntity.ok(userService.getAllUsers()); }

9. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping

这些是 @RequestMapping 的简写形式,分别对应 GET、POST、PUT 和 DELETE 请求。

  • 作用:简化不同 HTTP 方法的请求映射。
  • 示例:java深色版本@GetMapping("/users/{id}") public User getUserById(@PathVariable Long id) { return userService.getUserById(id); } @PostMapping("/users") public User createUser(@RequestBody User user) { return userService.createUser(user); }

四、事务管理

10. @Transactional

用于声明式事务管理,确保方法执行在一个事务上下文中。

  • 作用:声明事务边界,保证方法内的数据库操作要么全部成功,要么全部回滚。
  • 示例:java深色版本@Service public class UserService { @Transactional public void updateUser(User user) { userRepository.save(user); // 其他业务逻辑 } }

五、异步支持

11. @Async

用于标记一个方法为异步执行,需要配合 @EnableAsync 使用。

  • 作用:异步执行方法。
  • 示例:java深色版本@Service public class AsyncService { @Async public void asyncMethod() throws InterruptedException { Thread.sleep(5000); // 模拟耗时任务 System.out.println("异步任务完成"); } }

12. @EnableAsync

开启异步方法的支持。

  • 作用:启用异步方法的支持。
  • 示例:java深色版本@SpringBootApplication @EnableAsync public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }

六、定时任务

13. @Scheduled

用于定时任务的调度,需要配合 @EnableScheduling 使用。

  • 作用:定期执行某个方法。
  • 示例:java深色版本@Component public class ScheduledTasks { @Scheduled(fixedRate = 5000) public void reportCurrentTime() { System.out.println("当前时间: " + LocalDateTime.now()); } }

14. @EnableScheduling

开启定时任务的支持。

  • 作用:启用定时任务的支持。
  • 示例:java深色版本@SpringBootApplication @EnableScheduling public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }

七、测试相关注解

15. @SpringBootTest

用于集成测试,启动整个 Spring Boot 应用程序。

  • 作用:启动整个应用程序上下文来进行集成测试。
  • 示例:java深色版本@RunWith(SpringRunner.class) @SpringBootTest public class ApplicationTests { @Test public void contextLoads() { } }

16. @MockBean

用于创建一个 Mock 对象并将其注入到 Spring 上下文中。

  • 作用:创建 Mock 对象并注入到 Spring 上下文中。
  • 示例:java深色版本@RunWith(SpringRunner.class) @SpringBootTest public class ServiceTest { @MockBean private MyService myService; @Test public void testService() { when(myService.doSomething()).thenReturn("mocked result"); assertEquals("mocked result", myService.doSomething()); } }

通过合理使用这些注解,我们可以极大地提升 Spring Boot 项目的开发效率和代码质量。希望这篇文章能帮助你更好地理解和应用 Spring Boot 注解。

📌 提示:如果你想了解如何构建一个完整的可以参考 https://www.aikuyou.com/ ,该网站展示了如何利用 Spring Boot 等技术栈实现复杂功能的应用。


📌 文章关键词:Spring Boot 注解大全、Spring Boot 基础注解、Spring Boot 组件扫描、Spring Boot 控制层注解、Spring Boot 事务管理、Spring Boot 异步支持、Spring Boot 定时任务、Spring Boot 测试注解

📌 适用人群:Java 开发者、Spring Boot 初学者、后端工程师

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
有关js函数,方法的一些补充总结
string number boolean undefined 未定义 null 值为空 symbol 表示一个符号,符号类型是唯一的并且是不可修改的
子舒
2022/06/09
9550
JavaScript知识盲区整理
window是一个全局对象,其实就是相当于那个对象调用这个函数,那么这个函数里面的隐式参数this就是当前调用这个函数的对象
大忽悠爱学习
2021/11/15
5620
第60节:Java中的JavaScript技术
前言: JavaScript是什么呢?它是一种基于对象和事件驱动的脚本语言,主要是应用于客户端上的.JavaScript它可以做到信息的动态交互,具有交互性,它不允许直接访问本地硬盘,具有安全性,Ja
达达前端
2019/07/04
5870
JavaScript---网络编程(2)-函数与数组
上节,学完循环了~ 现在学Javascript的函数和数组。 JavaScript语法 每一种语言都有自己的语法规则,JS语法与Java很像,所以学习起来比较容易。JS中也一样有变量,语句,函数,数组等常见语言组成元素。
谙忆
2021/01/21
4080
JavaScript---网络编程(2)-函数与数组
56 道高频 JavaScript 与 ES6+ 的面试题及答案
用正则表达式匹配字符串,以字母开头,后面是数字、字符串或者下划线,长度为 9 - 20
夜尽天明
2019/08/19
9400
56 道高频 JavaScript 与 ES6+ 的面试题及答案
JAVA保姆式上手教程之JAVAWEB day01-js基础
张哥编程
2024/12/13
840
【ECMAScript6】es6 要点(一)剩余参数 | 数组方法 | 解构赋值 | 字符串模板 | 面向对象 | 模块
let : 不能重复声明,变量-可以修改,定义自身的块级作用域 const : 不能重复声明,常量-不能修改,块级作用域 。
前端修罗场
2023/10/07
2310
JavaScript基础语法整理
reverse----把元素下标进行互换,将原数组的元素进行反转,会改变原数组,并且反转后,还会返回一个数组
大忽悠爱学习
2021/11/15
6740
PHP 函数篇(上):自定义函数和内置函数
函数是现代高级编程语言的基本配备,PHP 也不例外。一个典型的 PHP 函数通过 function 关键字进行声明,然后紧跟着是函数名和通过圆括号声明的参数列表,再通过花括号定义函数体 —— 我们可以在函数体中定义具体的业务逻辑,最后通过 return 语句返回函数返回值(可选)。
学院君
2020/06/02
1.4K0
「JavaScript」数组与函数
请注意,本文编写于 2099 天前,最后修改于 174 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
5980
「JavaScript」数组与函数
day03_js学习笔记_02_js的内建对象、js的函数
day03_js学习笔记_02_js的内建对象、js的函数 ============================================================================= ============================================================================= 涉及到的知识点有: 三、js的内建对象 (1) Number对象 (2) Boolean对象
黑泽君
2018/10/11
4.8K0
最全字符串函数,总有你用到的~
在日常开发中,我们难免要和字符串打交道,各种各样的功能都可能用到上面的字符串函数,本文参考网上文章,W3C资料,以及自己平常开发中的高频需求整理形成,希望能够帮到有需要的人。
前端老王
2020/11/26
3800
用 Function.apply() 的参数数组化来提高 JavaScript程序性能
我们再来聊聊Function.apply() 在提升程序性能方面的技巧。 我们先从 Math.max() 函数说起, Math.max后面可以接任意个参数,最后返回所有参数中的最大值。 比如 alert(Math.max(5,8)) //8 alert(Math.max(5,7,9,3,1,6)) //9 但是在很多情况下,我们需要找出数组中最大的元素。 var arr=[5,7,9,1] alert(Math.max(arr)) // 这样却是不行的。一定要这样写
deepcc
2018/05/16
9390
Javascript提升阶段学习
JavaScript 1:javascript简介   JavaScript是一种脚本语言,能实现网页内容的交互显示,当用户在客户端显示该网页时,浏览器就会执行JavaScript程序,用户通过交互
别先生
2017/12/29
1.3K0
JavaScript学习笔记+常用js用法、范例(二)
javascript 加入如下语句,出错时会提示 注意: chrome、opera 和 safari 等浏览器不支持 window.onerror 事件(w3c标准没有此事件),需另外捕获出错信息
用户6808043
2022/02/24
2.3K0
JavaScript基础
「计算机语言」分为机器语言,汇编语言,高级语言。计算机内部最终执行的都是机器语言,由0和1这样的二进制数构成。
小城故事
2023/03/10
1.1K0
JavaScript基础
Javascript编码规范建议
示例: 解释: 声明包含元素的数组与对象,只有当内部元素的形式较为简单时,才允许写在一行。元素复杂的情况,还是应该换行书写。 示例:
Clearlove
2019/08/29
1.5K0
Javascript编码规范建议
01_JavaScript学习笔记整理-ECMAScript
1.在标签中,任何地方添加标签.标签中内容就是js代码. 虽然可以放在页面的任何地方,但是规范放在标签中.
全栈程序员站长
2021/07/13
7270
【Node.js算法题】数组去重、数组删除元素、数组排序、字符串排序、字符串反向、字符串改大写 、数组改大写、字符替换
本期文章是js的一些算法题,包括数组去重、数组删除元素、数组排序、字符串排序、字符串反向、字符串改大写 、数组改大写、字符替换。
颜颜yan_
2023/03/06
1.9K0
【Node.js算法题】数组去重、数组删除元素、数组排序、字符串排序、字符串反向、字符串改大写 、数组改大写、字符替换
JavaScript—函数
在JS中,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用。虽然for循环语句也能实现一些简单的操作,但是比较具有局限性,此时我们就可以使用JS中的函数。
Cikian.
2022/09/22
8730
推荐阅读
相关推荐
有关js函数,方法的一些补充总结
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 一、基础注解
    • 1. @SpringBootApplication
    • 2. @Configuration
    • 3. @Bean
  • 二、组件扫描与依赖注入
    • 4. @ComponentScan
    • 5. @Autowired
    • 6. @Qualifier
  • 三、控制层相关注解
    • 7. @RestController
    • 8. @RequestMapping
    • 9. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
  • 四、事务管理
    • 10. @Transactional
  • 五、异步支持
    • 11. @Async
    • 12. @EnableAsync
  • 六、定时任务
    • 13. @Scheduled
    • 14. @EnableScheduling
  • 七、测试相关注解
    • 15. @SpringBootTest
    • 16. @MockBean
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档