🌟前言
在使用SpringBoot开发中或者在求职面试中都会使用到很多注解或者问到注解相关的知识。本文主要对一些常用的注解进行了总结,同时也会举出具体例子,供大家学习和参考。
🌟注解一览表
注解 | 解释 |
@SpringBootApplication | 标记一个启动类,表示它是一个Spring Boot应用的入口点,同时也会自动扫描并加载其他相关注解。 |
@Configuration | 声明当前类是一个配置类,用于定义配置信息或者将其他Bean定义为Bean实例。 |
@EnableAutoConfiguration | 开启自动配置功能,根据当前项目的依赖和配置,自动配置Spring应用上下文的属性、Bean等。 |
@ComponentScan | 指定Spring容器要扫描的包路径,用于自动发现被Spring注解标识的组件,如@Service、@Repository等。 |
@RestController | 结合@Controller和@ResponseBody,用于定义控制器类,使其返回的结果自动转换为JSON格式。 |
@RequestMapping | 映射HTTP请求到处理器方法上,用于指定处理器方法的URL路径和HTTP请求方法。 |
@GetMapping | 处理HTTP的GET请求,将请求映射到相应的处理器方法上。 |
@PostMapping | 处理HTTP的POST请求,将请求映射到相应的处理器方法上。 |
@PutMapping | 处理HTTP的PUT请求,将请求映射到相应的处理器方法上。 |
@DeleteMapping | 处理HTTP的DELETE请求,将请求映射到相应的处理器方法上。 |
@RequestParam | 获取请求参数的值,用于将请求参数绑定到处理器方法的形参上。 |
@PathVariable | 获取URL路径中的变量值,用于将URL路径中的变量绑定到处理器方法的形参上。 |
@RequestBody | 接收HTTP请求的请求体内容,并将其转化为对应的Java对象或其他类型的参数。 |
@Autowired | 自动装配,用于自动注入依赖的Bean实例。 |
@Service | 用于标识一个服务类,表示它是业务逻辑层的组件。 |
@Repository | 用于标识一个数据访问类,表示它是数据访问层的组件。 |
@Component | 通用的Spring组件注解,用于标识一个普通的Bean组件。 |
@Value | 注入配置文件中的值到对应的变量中。 |
@Async | 标识异步方法,用于告诉Spring在调用该方法时使用异步线程执行。 |
@EnableCaching | 开启Spring的缓存支持,用于缓存方法的结果,提高性能。 |
@Transactional | 提供声明式事务管理,用于标识需要使用事务的方法或类。 |
@ExceptionHandler | 处理异常情况,用于定义全局的异常处理方法。 |
@Scheduled | 定时任务注解,用于标识定时任务的方法。 |
@Valid | 开启数据验证功能,用于对请求参数进行校验。 |
@EnableAsync | 开启异步调用支持,用于启用Spring的异步方法调用。 |
@EnableTransactionManagement | 开启事务管理支持,用于启用Spring的声明式事务管理功能。 |
@EnableScheduling | 开启定时任务,添加在启动类 |
@RestControllerAdvice | 标识异常处理类 |
🌟启动类以及配置类相关
@SpringBootApplication
解释:
- @SpringBootApplication是组合注解。相当于@Configuration、@EnableAutoConfiguration、@ComponentScan的组合。
- 用于标记启动类,指出应用入口。
@SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
@Configuration
解释:
- 声明当前类为配置类。相当于xml配置中的beans标签。
@Configuration public class MyConfig { @Bean public MyBean myBean() { return new MyBean(); } }
@EnableAutoConfiguration
解释:
- 开启SpringBoot自动装配功能。
@SpringBootApplication @EnableAutoConfiguration public class MyApplication { // ... }
@ComponentScan
解释:
- 配置SpringBoot扫描包路径。
@SpringBootApplication @ComponentScan("com.example") public class MyApplication { // ... }
🌟控制层相关
@RestController
解释:
- @RestController注解用于定义控制器类,将其返回的
结果自动转换为JSON格式
@RestController public class UserController { @GetMapping("/users") public List<User> getAllUsers() { // 返回所有用户列表的逻辑 } }
@RequestMapping
解释:
- 用于映射HTTP请求到处理器上,指定处理器方法的URL路径和HTTP请求方法。
@RestController @RequestMapping("/users") public class UserController { @GetMapping("/{id}") public User getUserById(@PathVariable("id") Long id) { // 根据id获取用户的逻辑 } }
@GetMapping、@PostMapping、@DeleteMapping、@PutMapping
解释:
- @GetMapping注解用于处理HTTP的GET请求,并将请求映射到相应的处理器方法上。
- @PostMapping注解用于处理HTTP的POST请求,并将请求映射到相应的处理器方法上。
- @DeleteMapping注解用于处理HTTP的DELETE请求,并将请求映射到相应的处理器方法上。
- @PutMapping是Spring框架中用于处理HTTP的PUT请求的注解。PUT请求通常用于更新资源,即将新的数据替换掉指定的资源。
@RestController @RequestMapping("/users") public class UserController { @GetMapping("/{id}") public User getUserById(@PathVariable("id") Long id) { // 根据id获取用户的逻辑 } } @RestController @RequestMapping("/users") public class UserController { @PostMapping public User createUser(@RequestBody User user) { // 创建用户的逻辑 } } @RestController @RequestMapping("/users") public class UserController { @DeleteMapping("/{id}") public void deleteUser(@PathVariable("id") Long id) { // 删除用户的逻辑 } } @RestController @RequestMapping("/users") public class UserController { @PutMapping("/{id}") public User updateUser(@PathVariable("id") Long id, @RequestBody User user) { // 更新用户信息的逻辑 } }
@RequestParam
解释:
- @RequestParam注解
用于获取请求参数的值
,并将其绑定到处理器方法的形参上。一般用于路径中?传参形式。
@RestController @RequestMapping("/users") public class UserController { @GetMapping public List<User> getUsersByPage(@RequestParam("page") int page, @RequestParam(value = "size", defaultValue = "10") int size) { // 分页查询用户列表的逻辑 } }
@PathVariable
解释:
- 用于
获取URL路径中的变量值
,并将其绑定到处理器方法的形参上。一般用于/传参的形式。
@RestController @RequestMapping("/users") public class UserController { @GetMapping("/{id}") public User getUserById(@PathVariable("id") Long id) { // 根据id获取用户的逻辑 } }
@RequestBody
解释:
- 用于
接收HTTP请求的请求体内容
,并将其转化为对应的Java对象
或其他类型的参数。
@RestController @RequestMapping("/users") public class UserController { @PostMapping public User createUser(@RequestBody User user) { // 创建用户的逻辑 } }
@Valid
解释:
- @Valid用于
开启数据验证功能
,对方法参数进行校验,确保其满足定义的验证规则
@RestController @RequestMapping("/users") public class UserController { @PostMapping public ResponseEntity<User> createUser(@Valid @RequestBody User user) { // 创建用户的逻辑 return ResponseEntity.status(HttpStatus.CREATED).body(user); } }