当前位置: 首页 > news >正文

Spring Boot 中常用注解及其用法

Spring Boot 是一个基于 Spring 框架的快速应用开发平台,它极大地简化了应用的开发过程。在 Spring Boot 中,有许多注解被广泛使用来简化配置和组件扫描。本文将介绍一些常用的 Spring Boot 注解及其用法。

1.@SpringBootApplication

@SpringBootApplication 是 Spring Boot 中最核心的注解,它结合了以下三个注解的功能:

  • @Configuration: 表明该类是一个配置类,可以包含 @Bean 方法。
  • @EnableAutoConfiguration: 启用 Spring Boot 的自动配置功能,自动配置类会根据类路径和应用配置自动配置 Spring Bean。
  • @ComponentScan: 用于扫描并自动装配带有 @Component、@Service、@Repository 或 @Controller 等注解的类。

示例

Java

深色版本

1@SpringBootApplication
2public class Application {
3    public static void main(String[] args) {
4        SpringApplication.run(Application.class, args);
5    }
6}

2.@Configuration

@Configuration 用于标记类作为 Java 配置类,可以包含一个或多个 @Bean 方法来定义 bean 的实例。

示例

Java

深色版本

1@Configuration
2public class AppConfig {
3
4    @Bean
5    public SomeService someService() {
6        return new SomeServiceImpl();
7    }
8}

3.@Component,@Service,@Repository,@Controller

这些注解都是 @Component 的子类型,用于标记特定类型的组件。它们的主要区别在于它们所表示的组件类型:

  • @Component: 通用组件。
  • @Service: 业务服务层组件。
  • @Repository: 数据访问/持久化层组件。
  • @Controller: 控制器组件,处理HTTP请求。

示例

Java

深色版本

1@Service
2public class UserService {
3    public User getUserById(int id) {
4        // ...
5    }
6}

4.@Autowired

@Autowired 用于自动装配bean,它可以作用于字段、构造函数或方法上。

示例

Java

深色版本

1@Service
2public class UserService {
3
4    private final UserRepository userRepository;
5
6    @Autowired
7    public UserService(UserRepository userRepository) {
8        this.userRepository = userRepository;
9    }
10
11    public User getUserById(int id) {
12        return userRepository.findById(id);
13    }
14}

5.@Bean

@Bean 用于在配置类中定义bean。当一个方法被 @Bean 标记后,它的返回值就会被作为bean注册到Spring容器中。

示例

Java

深色版本

1@Configuration
2public class AppConfig {
3
4    @Bean
5    public SomeService someService() {
6        return new SomeServiceImpl();
7    }
8}

6.@RestController

@RestController 是 @Controller 和 @ResponseBody 的组合注解,用于声明一个类为 RESTful 控制器,其所有方法的返回值都将直接写入 HTTP 响应体中。

示例

Java

深色版本

1@RestController
2@RequestMapping("/users")
3public class UserController {
4
5    @GetMapping("/{id}")
6    public User getUser(@PathVariable int id) {
7        // ...
8    }
9}

7.@RequestMapping,@GetMapping,@PostMapping,@PutMapping,@DeleteMapping

这些注解用于映射 HTTP 请求到特定的方法上。@GetMapping 映射 GET 请求,@PostMapping 映射 POST 请求等。

示例

Java

深色版本

1@RestController
2@RequestMapping("/users")
3public class UserController {
4
5    @GetMapping("/{id}")
6    public User getUser(@PathVariable int id) {
7        // ...
8    }
9
10    @PostMapping
11    public User createUser(@RequestBody User user) {
12        // ...
13    }
14}

8.@PathVariable,@RequestParam,@RequestBody,@RequestHeader

这些注解用于从 HTTP 请求中提取数据:

  • @PathVariable: 用于从 URL 中提取路径变量。
  • @RequestParam: 用于从查询字符串中提取参数。
  • @RequestBody: 用于将请求体中的数据绑定到方法参数上。
  • @RequestHeader: 用于从 HTTP 请求头中提取数据。

示例

Java

深色版本

1@RestController
2@RequestMapping("/users")
3public class UserController {
4
5    @GetMapping("/{id}")
6    public User getUser(@PathVariable int id) {
7        // ...
8    }
9
10    @PostMapping
11    public User createUser(@RequestBody User user) {
12        // ...
13    }
14}

9.@Profile

@Profile 用于指定配置文件的环境,可以用来区分开发、测试和生产环境。

示例

Java

深色版本

1@Configuration
2@Profile("dev")
3public class DevConfig {
4    // ...
5}

10.@ConditionalOnBean,@ConditionalOnMissingBean

这些注解用于根据条件决定是否注册某个bean。@ConditionalOnBean 当容器中存在指定的bean时才生效,而@ConditionalOnMissingBean 则是在容器中不存在指定的bean时才生效。

示例

Java

深色版本

1@Configuration
2@ConditionalOnMissingBean(name = "myCustomBean")
3public class CustomConfig {
4    @Bean
5    public MyCustomBean myCustomBean() {
6        return new MyCustomBean();
7    }
8}

11.@EnableAutoConfiguration

@EnableAutoConfiguration 用于启用 Spring Boot 的自动配置功能,通常与 @SpringBootApplication 一起使用。

示例

Java

深色版本

1@Configuration
2@EnableAutoConfiguration
3public class AppConfig {
4    // ...
5}

结论

Spring Boot 中的注解是简化配置和开发流程的重要工具。通过合理使用这些注解,你可以构建出高效、简洁的应用程序。希望这篇文章能帮助你更好地理解和使用 Spring Boot 中的注解。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Spring Security学习笔记(二)Spring Security认证和鉴权
  • [译] 深入浅出Rust基金会
  • Java给定一些元素随机从中选择一个
  • 基于Libero的工程创建
  • export在linux中的作用
  • 音视频入门基础:WAV专题(3)——FFmpeg源码中,判断某文件是否为WAV音频文件的实现
  • 决策树算法介绍:原理与案例实现
  • 线性代数|机器学习-P25线性规划和两人零和博弈
  • Linux 动静态库
  • 13.2 MongoDB
  • git连接远程仓库
  • VS2019打开《喜缺全书算法册》附带代码的方法
  • java Collections.singletonList方法介绍
  • 全网最详细的postman接口测试教程,一篇文章满足你
  • 流量录制与回放:jvm-sandbox-repeater工具详解
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 2019年如何成为全栈工程师?
  • gops —— Go 程序诊断分析工具
  • HTML-表单
  • Java小白进阶笔记(3)-初级面向对象
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • rc-form之最单纯情况
  • SpriteKit 技巧之添加背景图片
  • 包装类对象
  • 笨办法学C 练习34:动态数组
  • 闭包--闭包作用之保存(一)
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 协程
  • 7行Python代码的人脸识别
  • elasticsearch-head插件安装
  • # Maven错误Error executing Maven
  • #QT(TCP网络编程-服务端)
  • #QT(智能家居界面-界面切换)
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (力扣)1314.矩阵区域和
  • (排序详解之 堆排序)
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (原)本想说脏话,奈何已放下
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • ****三次握手和四次挥手
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .netcore如何运行环境安装到Linux服务器
  • 。Net下Windows服务程序开发疑惑
  • @拔赤:Web前端开发十日谈
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [C++] Boost智能指针——boost::scoped_ptr(使用及原理分析)
  • [codevs 2822] 爱在心中 【tarjan 算法】
  • [CSS]一文掌握
  • [Flex] PopUpButton系列 —— 控制弹出菜单的透明度、可用、可选择状态