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`

相关推荐
duapple2 小时前
Golang基于反射的ioctl实现
开发语言·后端·golang
字节源流4 小时前
关于maven的依赖下不下来的问题
java·maven
pjx9874 小时前
服务间的“握手”:OpenFeign声明式调用与客户端负载均衡
java·运维·spring·负载均衡
prinrf('千寻)5 小时前
MyBatis-Plus 的 updateById 方法不更新 null 值属性的问题
java·开发语言·mybatis
老华带你飞5 小时前
实习记录小程序|基于SSM+Vue的实习记录小程序设计与实现(源码+数据库+文档)
java·数据库·spring boot·小程序·论文·毕设·实习记录小程序
在未来等你5 小时前
互联网大厂Java求职面试:AI与大模型应用集成及云原生挑战
java·微服务·ai·kubernetes·大模型·embedding·spring ai
my_styles5 小时前
docker-compose部署项目(springboot服务)以及基础环境(mysql、redis等)ruoyi-ry
spring boot·redis·后端·mysql·spring cloud·docker·容器
源码技术栈5 小时前
SaaS基于云计算、大数据的Java云HIS平台信息化系统源码
java·大数据·云计算·云his·his系统·云医院·区域his
编程、小哥哥5 小时前
互联网大厂Java面试:从Spring Boot到微服务架构的技术深挖
java·spring boot·redis·微服务·prometheus·面试技巧
揽你·入怀6 小时前
数据结构:ArrayList简单实现与常见操作实例详解
java·开发语言