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`

相关推荐
IMPYLH3 小时前
Lua 的 IO (输入/输出)模块
开发语言·笔记·后端·lua
爱可生开源社区3 小时前
SCALE | SQLFlash 在 SQL 优化维度上的表现评估
后端
Java爱好狂.3 小时前
Java面试Redis核心知识点整理!
java·数据库·redis·分布式锁·java面试·后端开发·java八股文
sheji34163 小时前
【开题答辩全过程】以 基于Java的应急安全学习平台的设计与实现为例,包含答辩的问题和答案
java·开发语言·学习
程序员小假3 小时前
我们来说一下消息的可靠性投递
java·后端
duangww3 小时前
SAPUI5 1.71.78老版本的消费restful服务
后端·restful
席之郎小果冻3 小时前
【04】【创建型】【聊一聊,建造者模式】
java·前端·建造者模式
用户8599681677694 小时前
UE5虚幻引擎汽车HMI设计高级研修课
后端
用户8599681677694 小时前
鸿蒙HarmonyOS多线程编程实战:AI语音
后端