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

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`

相关文章:

  • 何恺明团队又发新作!!-用于物理推理的去噪哈密顿网络
  • Linux基础命令总结
  • Set的学习
  • 论文如何降低AIGC?(完整指南版)
  • 【Linux系统篇】:信号的生命周期---从触发到保存与捕捉的底层逻辑
  • 长途骑行装备攻略:VELO维乐 Angel Revo坐垫伴我畅享旅途
  • arcpy列表函数的应用
  • ClickHouse查询执行与优化
  • Linux基础篇、第4章_03系统磁盘高级管理LVM 逻辑卷管理器
  • 腾讯二面:TCC分布式事务 | 图解TCC|用Go语言实现一个TCC
  • java中的Selector详解
  • 高中数学联赛模拟试题精选第18套几何题
  • 前端职业发展:如何规划前端工程师的成长路径?
  • 二叉树层序遍历
  • React-Hook
  • Java基础第五章、面向对象程序设计
  • AIGC赋能智慧医疗:从影像诊断到个性化治疗的革命性突破
  • 初始网络流(最小割)
  • 构建AI大模型应用的LangChain之核心功能
  • USART串口通讯
  • 京东美团开打,苦了商家?
  • 航行警告!黄海南部进行实弹射击,禁止驶入
  • ​王毅会见塔吉克斯坦外长穆赫里丁
  • 来论|这无非就是一只“纸老虎”:评特朗普政府“关税战”
  • 夜读丨囿于厨房与爱
  • 国务院同意在海南全岛和秦皇岛等15个城市(地区)设立跨境电子商务综合试验区