SpringBoot 常用注解通俗解释

SpringBoot 常用注解通俗解释

一、启动类相关

  1. @SpringBootApplication

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

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

• 包含三个小功能:

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

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

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

二、控制器相关(Controller)

  1. @RestController

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

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

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

  1. @RequestMapping

• 作用:定义请求路径

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

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

  1. @GetMapping / @PostMapping

• 作用:指定GET/POST等请求方式

• 通俗理解:

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

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

  1. @PathVariable

• 作用:获取URL中的变量

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

• 示例:

```java

@GetMapping("/users/{id}") // 访问/users/123

public String getUser(@PathVariable Long id) {

return "找到用户"+id; // id=123

}

```

  1. @RequestParam

• 作用:获取请求参数

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

• 示例:

```java

// 访问 /search?keyword=手机

@GetMapping("/search")

public String search(@RequestParam String keyword) {

return "正在搜索:" + keyword; // keyword="手机"

}

```

  1. @RequestBody

• 作用:获取请求体中的JSON数据

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

• 示例:

```java

@PostMapping("/users")

public User addUser(@RequestBody User user) {

// 前端发来JSON自动变成User对象

return userService.save(user);

}

```

三、服务层相关(Service)

  1. @Service

• 作用:标记这是一个服务类

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

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

  1. @Transactional

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

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

• 示例:

```java

@Transactional

public void transferMoney(Long from, Long to, BigDecimal amount) {

// 扣钱和加钱要么都成功,要么都失败

accountService.debit(from, amount);

accountService.credit(to, amount);

}

```

四、数据访问层(Repository)

  1. @Repository

◦ 作用:标记这是数据访问组件

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

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

五、依赖注入

  1. @Autowired

◦ 作用:自动装配依赖对象

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

◦ 示例:

```java

@Service

public class UserService {

@Autowired // Spring自动把UserRepository实例放进来

private UserRepository userRepo;

}

```

六、实体类相关(Entity)

  1. @Entity

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

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

  1. @Id

◦ 作用:标记这是主键字段

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

  1. @Column

◦ 作用:定义字段属性

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

◦ 示例:

```java

@Column(name = "user_name", nullable = false, length = 50)

private String username;

```

七、配置相关

  1. @Configuration

◦ 作用:声明这是一个配置类

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

  1. @Bean

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

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

◦ 示例:

```java

@Configuration

public class AppConfig {

@Bean

public PasswordEncoder passwordEncoder() {

return new BCryptPasswordEncoder();

}

}

```

八、其他常用

  1. @Component

◦ 作用:通用的组件注解

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

  1. @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`

相关推荐
阿丰资源10 分钟前
基于Spring Boot的电影城管理系统(直接运行)
java·spring boot·后端
IT_陈寒12 分钟前
SpringBoot自动配置的坑差点让我加班到天亮
前端·人工智能·后端
呱牛do it20 分钟前
企业级门户网站设计与实现:基于SpringBoot + Vue3的全栈解决方案(Day 8)
java
消失的旧时光-19431 小时前
Spring Boot 工程化进阶:统一返回 + 全局异常 + AOP 通用工具包
java·spring boot·后端·aop·自定义注解
NE_STOP1 小时前
Redis--发布订阅命令和Redis事务
java
PAC_3Dame1 小时前
记一次真实的线上OOM
java
SunnyDays10112 小时前
如何在Java中将Word文档转换为图像(JPEG、PNG或SVG)
java
追风筝的人er2 小时前
SpringBoot+Vue3 企业考勤如何处理法定假期?节假日方案、调休补班与工作日判断链路拆解
前端·vue.js·后端
Lumos_7772 小时前
Linux -- 线程
java·jvm·算法
知兀2 小时前
【MybatisPlus】后端用枚举类,数据库用tinyint,存在枚举类型转换
java