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`

相关推荐
80530单词突击赢7 分钟前
C++关联容器深度解析:set/map全攻略
java·数据结构·算法
兩尛14 分钟前
c++知识点1
java·开发语言·c++
ONE_PUNCH_Ge15 分钟前
Go 语言泛型
开发语言·后端·golang
东东51616 分钟前
果园预售系统的设计与实现spingboot+vue
前端·javascript·vue.js·spring boot·个人开发
舟舟亢亢16 分钟前
JVM复习笔记——下
java·jvm·笔记
rainbow688918 分钟前
Python学生管理系统:JSON持久化实战
java·前端·python
良许Linux28 分钟前
DSP的选型和应用
后端·stm32·单片机·程序员·嵌入式
有味道的男人31 分钟前
1688获得商品类目调取商品榜单
java·前端·spring
独自破碎E35 分钟前
【中心扩展法】LCR_020_回文子串
java·开发语言