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`