SpringBoot 常用注解通俗解释

SpringBoot 常用注解通俗解释

一、启动类相关

1. @SpringBootApplication  
   • 作用:这是SpringBoot项目的"总开关",放在主类上

   • 通俗理解:相当于对电脑说:"开机!我要用SpringBoot了!"

   • 包含三个小功能:

     ◦ `@Configuration`:告诉Spring这里有些配置

     ◦ `@EnableAutoConfiguration`:让SpringBoot自动配置

     ◦ `@ComponentScan`:让Spring去扫描当前包下的组件


二、控制器相关(Controller)

2. @RestController  
   • 作用:标记这是一个控制器,返回JSON数据

   • 通俗理解:挂个牌子"这里是接待处",来的请求都转成JSON格式回复

   • 对比:`@Controller`是返回网页,`@RestController`是返回数据


3. @RequestMapping  
   • 作用:定义请求路径

   • 通俗理解:给办公室贴门牌号,比如`/user`就是"用户办公室"

   • 示例:`@RequestMapping("/api/users")` → 访问路径是`http://地址/api/users`


4. @GetMapping / @PostMapping  
   • 作用:指定GET/POST等请求方式

   • 通俗理解:

     ◦ `@GetMapping`:只接受"敲门"(浏览器直接访问)

     ◦ `@PostMapping`:只接受"递纸条"(表单提交)


5. @PathVariable  
   • 作用:获取URL中的变量

   • 通俗理解:从网址中抠出数字/文字

   • 示例:  

     ```java
     @GetMapping("/users/{id}")  // 访问/users/123
     public String getUser(@PathVariable Long id) {
         return "找到用户"+id;  // id=123
     }
     ```

6. @RequestParam  
   • 作用:获取请求参数

   • 通俗理解:从网址问号后面拿参数

   • 示例:  

     ```java
     // 访问 /search?keyword=手机
     @GetMapping("/search")
     public String search(@RequestParam String keyword) {
         return "正在搜索:" + keyword;  // keyword="手机"
     }
     ```

7. @RequestBody  
   • 作用:获取请求体中的JSON数据

   • 通俗理解:收快递(接收前端发来的JSON包裹)

   • 示例:  

     ```java
     @PostMapping("/users")
     public User addUser(@RequestBody User user) {
         // 前端发来JSON自动变成User对象
         return userService.save(user);
     }
     ```

三、服务层相关(Service)

8. @Service  
   • 作用:标记这是一个服务类

   • 通俗理解:挂个牌子"这里是业务处理中心"

   • 特点:通常包含业务逻辑,比如计算、数据处理等


9. @Transactional  
   • 作用:声明事务(要么全部成功,要么全部失败)

   • 通俗理解:打包操作,要么全部完成,要么全部取消

   • 示例:  

     ```java
     @Transactional
     public void transferMoney(Long from, Long to, BigDecimal amount) {
         // 扣钱和加钱要么都成功,要么都失败
         accountService.debit(from, amount);
         accountService.credit(to, amount);
     }
     ```

四、数据访问层(Repository)

10. @Repository  
    ◦ 作用:标记这是数据访问组件

    ◦ 通俗理解:挂个牌子"这里是数据库操作员"

    ◦ 注意:用JPA时通常继承`JpaRepository`,可以不加这个注解


五、依赖注入

11. @Autowired  
    ◦ 作用:自动装配依赖对象

    ◦ 通俗理解:需要什么工具,喊一声"给我拿个XXX",Spring就会递给你

    ◦ 示例:  

      ```java
      @Service
      public class UserService {
          @Autowired  // Spring自动把UserRepository实例放进来
          private UserRepository userRepo;
      }
      ```

六、实体类相关(Entity)

12. @Entity  
    ◦ 作用:标记这是数据库表对应的类

    ◦ 通俗理解:给Java类贴标签"我是数据库里的一张表"


13. @Id  
    ◦ 作用:标记这是主键字段

    ◦ 通俗理解:给字段贴标签"这是我的身份证号"


14. @Column  
    ◦ 作用:定义字段属性

    ◦ 通俗理解:给字段加备注说明

    ◦ 示例:  

      ```java
      @Column(name = "user_name", nullable = false, length = 50)
      private String username;
      ```

七、配置相关

15. @Configuration  
    ◦ 作用:声明这是一个配置类

    ◦ 通俗理解:挂个牌子"这里是工具配置中心"


16. @Bean  
    ◦ 作用:声明一个方法返回的对象交给Spring管理

    ◦ 通俗理解:在配置中心里放个新工具,大家都可以用

    ◦ 示例:  

      ```java
      @Configuration
      public class AppConfig {
          @Bean
          public PasswordEncoder passwordEncoder() {
              return new BCryptPasswordEncoder();
          }
      }
      ```

八、其他常用

17. @Component  
    ◦ 作用:通用的组件注解

    ◦ 通俗理解:万用标签,可以贴在任何需要Spring管理的类上


18. @Value  
    ◦ 作用:注入配置文件中的值

    ◦ 通俗理解:从application.properties里读取设置

    ◦ 示例:  

      ```java
      @Value("${app.page.size}")  // 对应配置文件中的app.page.size=10
      private int pageSize;
      ```

快速记忆口诀

• 开机:`@SpringBootApplication`

• 接待:`@RestController` + `@RequestMapping`

• 收参数:`@PathVariable`、`@RequestParam`、`@RequestBody`

• 业务:`@Service` + `@Transactional`

• 数据库:`@Entity` + `@Id` + `@Column`

• 要工具:`@Autowired`

• 配东西:`@Configuration` + `@Bean`

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

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

相关文章

栈应用:括号匹配

1&#xff1a;普通字符串括号匹配 #include <iostream> #include <stack> #include <string> using namespace std; bool mat(char,char); int if_match(string); int main(){string a;cin>>a;cout<<if_match(a)<<endl;return 0; } bool m…

某东h5st_5.1(补环境)

JS逆向实战——某东h5st_5.1&#xff08;补环境&#xff09; 声明网站流程分析结果展示总结 声明 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无…

新增Webhook通知功能,文档目录树展示性能优化,zyplayer-doc 2.5.1 发布啦!

zyplayer-doc是一款适合企业和个人使用的WIKI知识库管理工具&#xff0c;支持在线编辑富文本、Markdown、表格、Office文档、API接口、思维导图、Drawio以及任意的文本文件&#xff0c;支持基于知识库的AI问答&#xff0c;专为私有化部署而设计&#xff0c;最大程度上保证企业或…

macOS安全隐私最佳实践分析

1. 引言 随着数字世界的不断扩展&#xff0c;个人和组织面临的安全与隐私威胁也日益增加。作为专业的安全合规与隐私保护研究团队&#xff0c;Kaamel 对 macOS 系统的安全隐私现状进行了全面分析&#xff0c;并提出了一系列最佳实践建议&#xff0c;旨在帮助用户更好地保护自己…

架构设计之异地多活与单元化(Set化)

公司的业务到达一定规模后,往往会考虑做多数据中心。一方面是面临业务增长带来的挑战,单个数据中心变得难以支撑;另一方面出于对业务容灾的考量,也可能在多个城市建立数据中心达到容灾目的。单元化(Set化)是作为异地多活的一个解决方案。 一、什么是异地多活 异地多活是…

Kettle学习

一、Kettle 简介 Kettle(现称为 Pentaho Data Integration)是一款开源ETL工具,支持从多种数据源抽取、转换和加载数据,广泛应用于数据仓库构建、数据迁移和清洗。其核心优势包括: 可视化操作:通过拖拽组件设计数据处理流程(转换和作业)。多数据源支持:数据库(MySQL/…

苹果计划2026年底前实现美版iPhone“印度造”,以减轻关税及地缘政治风险

基于 6 个来源 据多家媒体报道&#xff0c;苹果公司计划在2026年底前&#xff0c;实现在印度组装销往美国的大部分或全部iPhone手机&#xff0c;以减轻关税和地缘政治紧张局势带来的风险。这一目标意味着苹果需将印度的iPhone产量增加一倍以上&#xff0c;凸显其供应链多元化战…

【C++】googletest_TEST/TEST_F

在 Google Test 框架中&#xff0c;TEST 和 TEST_F 是定义测试用例的两个核心宏&#xff0c;它们的区别主要体现在 测试上下文的管理方式 上。以下是二者的详细对比&#xff1a; 1. TEST 宏 定义方式 TEST(TestSuiteName, TestName) {// 测试逻辑 }特点 独立上下文&#xff…

14-DevOps-快速部署Kubernetes

在学习阶段&#xff0c;为了能快速部署Kubernetes&#xff0c;这里用一个快速安装工具&#xff1a;Kubeode&#xff0c;来完成Kubernetes的部署。 接下来部署一个单机&#xff0c;一主一从的Kubernetes。一主一从都部署在同一台服务器上。 在虚拟机新开一个服务器&#xff0c…

Java 异常处理全解析:从基础到自定义异常的实战指南

Java 异常处理全解析&#xff1a;从基础到自定义异常的实战指南 一、Java 异常体系&#xff1a;Error 与 Exception 的本质区别 1. 异常体系核心架构 Java把异常当作对象来处理&#xff0c;并定义一个基类java.lang.Throwable作为所有异常的超类。 在Java API中已经定义了许…

redis 数据类型新手练习系列——string类型

redis 数据类型 Redis 主要支持以下几种数据类型&#xff1a; &#xff08;1&#xff09;string&#xff08;字符串&#xff09;: 基本的数据存储单元&#xff0c;可以存储字符串、整数或者浮点数。 &#xff08;2&#xff09;hash&#xff08;哈希&#xff09;:一个键值对集…

Android12源码编译及刷机

由于google的AOSP源码拉取经常失败&#xff0c;编译还经常出现各种问题。这里根据香橙派Orange Pi 5 Plus&#xff08;Android12电视镜像&#xff09;源码进行编译演示。 RK芯片的开发板可玩性很高&#xff0c;这里以电视版本android系统为例子&#xff0c;学习的同时还可以当…

从零实现 registry.k8s.io/pause:3.8 镜像的导出与导入

以下是为 registry.k8s.io/pause:3.8 镜像的导出与导入操作定制的完整教程&#xff0c;适用于 Kubernetes 集群中使用 containerd 作为容器运行时的场景。本教程包含详细步骤、常见问题解析及注意事项。 从零实现 registry.k8s.io/pause:3.8 镜像的导出与导入 背景说明 Kuber…

Redis和MQ的区别

redis是一个高性能的key-value数据库&#xff0c;支持消息推送功能&#xff0c;可以当做一个轻量级的队列服务器使用。 redis只是提供一个高性能的、原子操作内存键值队&#xff0c;具有高速访问能力&#xff0c;虽然可以做消息队列的存储&#xff0c;但不具备消息队列的任何功…

Centos7系统防火墙使用教程

CentOS 7是一种常见的Linux操作系统&#xff0c;防火墙作为网络安全的第一道防线&#xff0c;对于服务器的安全至关重要。本文将介绍CentOS 7系统中防火墙的使用教程&#xff0c;包括如何开启、关闭、配置以及防火墙规则的添加和删除。 一、查看防火墙状态 在开始操作之前&am…

Uniapp:navigator(页面跳转)

目录 一、基本概述二、属性说明三、具体使用一、基本概述 页面跳转。该组件类似HTML中的<a>组件,但只能跳转本地页面。目标页面必须在pages.json中注册。 二、属性说明 属性名类型默认值说明平台差异说明urlString应用内的跳转链接,值为相对路径或绝对路径,如:“……

大疆机场及无人机上云(航线规划、指令飞行...)

系统操作预览&#xff1a; 包含一键起飞、指令飞行、云台控制、变焦、航线规划、空域规划、成果数据展示、实时飞行模拟、任务派发等 大疆无人机飞控平台&#xff08;航线规划、机场3、私有化部署&#xff09;_哔哩哔哩_bilibili 2025-04-02 更新 start、 已支持大疆机场3。…

【运维】云端掌控:用Python和Boto3实现AWS资源自动化管理

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在云计算时代,AWS(Amazon Web Services)作为领先的云服务平台,其资源管理的高效性对企业至关重要。本文深入探讨如何利用Python的boto3…

Java ThreadLocal与内存泄漏

当我们利用 ThreadLocal 来管理数据时&#xff0c;我们不可避免地会面临内存泄漏的风险。 原因在于 ThreadLocal 的工作方式。当我们在当前线程的 ThreadLocalMap 中存储一个值时&#xff0c;一旦这个值不再需要&#xff0c;释放它就变得至关重要。如果不这样做&#xff0c;那么…