Spring Boot 常用注解详解

news/2025/2/22 2:48:25/

文章目录

  • Spring Boot 常用注解详解
    • 1. Spring Boot 核心注解
      • 1.1 `@SpringBootApplication`
      • 1.2 `@Configuration`
      • 1.3 `@ComponentScan`
    • 2. Bean 相关注解
      • 2.1 `@Bean`
      • 2.2 `@Component`
      • 2.3 `@Service`
      • 2.4 `@Repository`
      • 2.5 `@Controller` 和 `@RestController`
    • 3. 依赖注入注解
      • 3.1 `@Autowired`
      • 3.2 `@Qualifier`
      • 3.3 `@Value`
    • 4. Web 相关注解
      • 4.1 `@RequestMapping`
      • 4.2 `@GetMapping`、`@PostMapping`、`@PutMapping`、`@DeleteMapping`
      • 4.3 `@PathVariable`
      • 4.4 `@RequestParam`
    • 5. 配置相关注解
      • 5.1 `@ConfigurationProperties`
      • 5.2 `@PropertySource`
    • 6. 事务管理注解
      • 6.1 `@Transactional`
    • 7. 缓存相关注解
      • 7.1 `@Cacheable`
      • 7.2 `@CacheEvict`
    • 8. 总结


Spring Boot 常用注解详解

Spring Boot 是一个基于 Spring 框架的快速开发框架,它通过自动配置和约定优于配置的原则,极大地简化了 Spring 应用的开发。在 Spring Boot 中,注解(Annotation)是核心组成部分之一,它们帮助我们定义组件、配置应用、处理请求等。本文将详细介绍 Spring Boot 中常用的注解及其使用场景。


1. Spring Boot 核心注解

1.1 @SpringBootApplication

@SpringBootApplication 是 Spring Boot 应用的入口注解,通常用于主类上。它是一个组合注解,包含了以下三个注解的功能:

  • @Configuration:表示该类是一个配置类。
  • @EnableAutoConfiguration:启用 Spring Boot 的自动配置机制。
  • @ComponentScan:自动扫描当前包及其子包下的组件。
@SpringBootApplication
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}

1.2 @Configuration

@Configuration 用于标记一个类为配置类,通常与 @Bean 注解一起使用,用于定义 Spring 容器中的 Bean。

@Configuration
public class AppConfig {@Beanpublic MyService myService() {return new MyService();}
}

1.3 @ComponentScan

@ComponentScan 用于自动扫描指定包下的组件(如 @Component@Service@Repository 等),并将它们注册为 Spring Bean。

@SpringBootApplication
@ComponentScan(basePackages = "com.example")
public class MyApplication {// ...
}

2. Bean 相关注解

2.1 @Bean

@Bean 用于方法上,表示该方法返回的对象应注册为 Spring 容器中的 Bean。

@Configuration
public class AppConfig {@Beanpublic MyBean myBean() {return new MyBean();}
}

2.2 @Component

@Component 是一个通用的注解,用于标记一个类为 Spring 组件。

@Component
public class MyComponent {// ...
}

2.3 @Service

@Service 用于标记服务层的组件,通常用于业务逻辑层。

@Service
public class MyService {// ...
}

2.4 @Repository

@Repository 用于标记数据访问层的组件,通常用于数据库操作。

@Repository
public class MyRepository {// ...
}

2.5 @Controller@RestController

  • @Controller 用于标记控制层的组件,通常用于 MVC 模式中的控制器。
  • @RestController@Controller@ResponseBody 的组合,用于 RESTful Web 服务。
@RestController
public class MyController {@GetMapping("/hello")public String hello() {return "Hello, World!";}
}

3. 依赖注入注解

3.1 @Autowired

@Autowired 用于自动注入依赖的 Bean。

@Service
public class MyService {@Autowiredprivate MyRepository myRepository;
}

3.2 @Qualifier

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

@Service
public class MyService {@Autowired@Qualifier("myBean1")private MyBean myBean;
}

3.3 @Value

@Value 用于注入属性值,通常从配置文件中读取。

@Service
public class MyService {@Value("${app.name}")private String appName;
}

4. Web 相关注解

4.1 @RequestMapping

@RequestMapping 用于映射 HTTP 请求到处理方法,可以指定 URL 路径和 HTTP 方法。

@RestController
public class MyController {@RequestMapping(value = "/hello", method = RequestMethod.GET)public String hello() {return "Hello, World!";}
}

4.2 @GetMapping@PostMapping@PutMapping@DeleteMapping

这些注解是 @RequestMapping 的简化版,分别用于处理 GET、POST、PUT 和 DELETE 请求。

@RestController
public class MyController {@GetMapping("/hello")public String hello() {return "Hello, World!";}
}

4.3 @PathVariable

@PathVariable 用于将 URL 中的变量绑定到方法参数。

@GetMapping("/user/{id}")
public String getUser(@PathVariable Long id) {return "User ID: " + id;
}

4.4 @RequestParam

@RequestParam 用于将请求参数绑定到方法参数。

@GetMapping("/user")
public String getUser(@RequestParam String name) {return "User Name: " + name;
}

5. 配置相关注解

5.1 @ConfigurationProperties

@ConfigurationProperties 用于将配置文件中的属性绑定到 Java 对象。

@ConfigurationProperties(prefix = "app")
public class AppConfig {private String name;private String version;// getters and setters
}

5.2 @PropertySource

@PropertySource 用于指定外部属性文件的位置。

@Configuration
@PropertySource("classpath:app.properties")
public class AppConfig {// ...
}

6. 事务管理注解

6.1 @Transactional

@Transactional 用于标记方法或类需要事务管理。

@Service
public class MyService {@Transactionalpublic void performTransaction() {// ...}
}

7. 缓存相关注解

7.1 @Cacheable

@Cacheable 用于缓存方法的返回值。

@Cacheable("users")
public User getUser(Long id) {// ...
}

7.2 @CacheEvict

@CacheEvict 用于清除缓存。

@CacheEvict(value = "users", allEntries = true)
public void clearCache() {// ...
}

8. 总结

Spring Boot 中的注解极大地简化了开发流程,使得开发者能够更专注于业务逻辑的实现。通过本文的介绍,相信你已经对 Spring Boot 中的常用注解有了更深入的了解。在实际开发中,灵活运用这些注解,可以显著提高代码的可读性和可维护性。

希望本文对你学习 Spring Boot 有所帮助!如果你有任何问题或建议,欢迎留言讨论。


http://www.ppmy.cn/news/1574037.html

相关文章

了解几个 HTML 标签属性,实现优化页面加载性能

引言 当浏览器解析 HTML 文档时,如果遇到一个普通的脚本标签(不带 async 或 defer 属性),浏览器会立即下载并执行该脚本,同时阻塞 HTML 解析过程。这意味着,如果脚本文件较大或者网络连接较慢,…

【设计模式精讲】创建型模式之原型模式(深克隆、浅克隆)

文章目录 第四章 创建型模式4.5 原型模式4.5.1 原型模式介绍4.5.2 原型模式原理4.5.3 深克隆与浅克隆4.5.4 原型模式应用实例4.5.5 原型模式总结 个人主页:道友老李 欢迎加入社区:道友老李的学习社区 第四章 创建型模式 4.5 原型模式 4.5.1 原型模式介…

基于机器学习的水文数据采集预测与可视化分析系统

【机器学习】基于机器学习的水文数据采集预测与可视化分析系统(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 系统采用Python及Flask框架构建Web服务端,结合PyMySQL与MySQL实现数据…

Zabbix 7.2实操指南:基于OpenEuler系统安装Zabbix 7.2

原文出处:乐维社区 部署环境 openEuler 22.03 LTS PHP 8.0 Apache Mysql 8.0 MySQL数据库 6.0 以上版本需要安装mysql8.0以上版本的数据库(以mysql为例子)。 欧拉系统自带 mysql8.0 的源,无需要安装额外的源。 安装mysql …

基于javaweb的SpringBoot体检管理系统设计和实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

Html5学习教程,从入门到精通,HTML5 简介语法知识点及案例代码(1)

HTML5 简介 HTML5 是最新的 HTML 标准&#xff0c;它引入了许多新特性&#xff0c;使网页开发更加强大和灵活。以下是一些关键的 HTML5 语法知识点&#xff1a; 1. 文档类型声明 (DOCTYPE) HTML5 的文档类型声明非常简单&#xff1a; <!DOCTYPE html>2. 字符编码 HT…

Arduino 第十六章:pir红外人体传感器练习

Arduino 第十六章&#xff1a;PIR 传感器练习 一、引言 在 Arduino 的众多有趣项目中&#xff0c;传感器的应用是非常重要的一部分。今天我们要学习的主角是 PIR&#xff08;被动红外&#xff09;传感器。PIR 传感器能够检测人体发出的红外线&#xff0c;常用于安防系统、自动…

汽车免拆诊断案例 | 2010 款路虎揽胜车空调偶尔出风异常

故障现象  一辆2010款路虎揽胜车&#xff0c;搭载5.0 L发动机&#xff0c;累计行驶里程约为16万km。车主反映&#xff0c;接通空调开关后&#xff0c;有时出风忽大忽小&#xff0c;有时不出风&#xff0c;有时要等2 min左右才出风&#xff1b;有时两三天出现一次&#xff0c;…