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`

相关推荐
寒山李白31 分钟前
IDEA连接MySQL服务器数据库指南
java·数据库·mysql·intellij-idea·idea·database
计算机学姐1 小时前
基于SpringBoot的动漫推荐系统【协同过滤推荐算法+词云图+排行榜】
java·vue.js·spring boot·后端·mysql·intellij-idea·推荐算法
人邮异步社区2 小时前
推荐几本学习计算机语言的书
java·c语言·c++·python·学习·golang
qq_574656252 小时前
java后端初始化模版
java·开发语言
韩立学长3 小时前
基于Springboot的影视评论网站的设计与实现58py6238(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
毕设源码-朱学姐3 小时前
【开题答辩全过程】以 基于JAVA的市级非物质文化遗产交流平台为例,包含答辩的问题和答案
java·开发语言
小学鸡!4 小时前
Spring Boot通过手机号获取归属地
java·spring boot
pedestrian_h5 小时前
操作系统-线程
android·java·开发语言
whltaoin5 小时前
【JAVA全栈项目】弧图图-智能图床 SpringBoot+Vue3 :[框架开荒:一文全步骤打通前后端项目全流程]
java·spring boot·vue·开源项目·全栈·cos
Fu1co6 小时前
【Spring Boot】Spring Boot解决循环依赖
java·spring boot·spring