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

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.xdnf.cn/news/2234.html

相关文章:

  • puppeteer注入浏览器指纹过CDP
  • linux blueZ 第五篇:高阶优化与性能调优——蓝牙吞吐、延迟与功耗全攻略
  • 详解 Network.framework:iOS 网络开发的新基石
  • Spring进阶篇
  • Java面试高频问题(29-30)
  • 解释PyTorch中的广播机制
  • 如何在 Ubuntu 22.04|20.04|18.04 上安装 PostGIS
  • Docker 学习入门篇:镜像构建、推送与私有仓库搭建全攻略
  • JAVA JVM面试题
  • MQ消息的不可靠性发生情况与解决方案
  • Goland终端PowerShell命令失效
  • YOLOv5修改检测框颜色,粗细,标签大小,标签名称
  • 提示词的神奇魔力——如何通过它改变AI的输出
  • 7.Geometric Intersection: Interval
  • [实战] 卡尔曼滤波:原理、推导与卫星导航应用仿真(完整代码)
  • 若干查找算法
  • Vue3 组件通信与插槽
  • 未雨绸缪:应对软件开发变更的生存之道
  • 23种设计模式-行为型模式之观察者模式(Java版本)
  • 理想星环OS选择NuttX作为MCU侧OS的核心原因分析​
  • 树莓派学习专题<9>:使用V4L2驱动获取摄像头数据--设定分辨率和帧率
  • ASP.NET CORE部署IIS的三种方式
  • 第14节:传统图像特征提取 - 形状特征(HOG、SIFT与SURF)
  • 【fork初体验】
  • 数据结构手撕--【堆】
  • 【LeetCode】11.盛最多水的容器
  • 系列位置效应——AI与思维模型【80】
  • 鸿蒙代码@Builder
  • 关于调度策略的系统性解析与物流机器人应用实践
  • Universal Value Function Approximators 论文阅读(强化学习,迁移?)