springboot后端开发-常见注解及其用途

文章目录

      • [1. 组件注解](#1. 组件注解)
      • [2. 依赖注入注解](#2. 依赖注入注解)
      • [3. 配置类注解](#3. 配置类注解)
      • [4. 测试注解](#4. 测试注解)
      • [5. 控制器注解](#5. 控制器注解)
      • [6. 安全和认证注解](#6. 安全和认证注解)
      • [7. 切面相关注解](#7. 切面相关注解)
      • [8. API文档相关注解(需引入swagger)](#8. API文档相关注解(需引入swagger))
      • [9. 其他注解](#9. 其他注解)

在Spring Boot框架中,有许多常用的注解用来简化开发过程中的依赖注入、组件扫描、配置、安全控制等方面的工作。这些注解可以大致分为几类:

1. 组件注解

这些注解主要用于标记类或接口,表明它们是Spring容器中的组件,并可以进行自动装配。

  • @Component通用组件注解,可以用于任何非特殊类型的Java类。
  • @Repository:用于数据访问层(DAO层)的组件。
  • @Service:用于业务逻辑层的组件。
  • @Controller:用于Web层的控制器组件。
  • @RestController:结合了@Controller和@ResponseBody的功能,用于直接返回JSON数据的控制器。
  • @ControllerAdvice:控制器切面标注。

2. 依赖注入注解

这些注解主要用于在类内部声明依赖关系,并由Spring框架负责实例化和注入。

  • @Autowired:自动装配bean,可以用于字段、构造函数、setter方法或任意方法。
  • @Qualifier:与@Autowired一起使用,用于消除模糊性,指定具体要注入的bean名称。
  • @Resource:基于JNDI的查找服务,可以通过name或lookup-name来装配bean,也可以通过shared属性控制是否共享。
  • @Inject:JSR-330标准注解,用于依赖注入。
  • @Bean:用于在配置类中创建Spring容器管理的bean。

3. 配置类注解

这些注解用于声明配置类或开启某些特定功能的支持。

  • @Configuration:声明一个配置类,可以包含@Bean方法。
  • @EnableAutoConfiguration:开启自动配置,是Spring Boot自动配置的核心注解。
  • @Import:导入一个或多个配置类。
  • @PropertySource :从指定资源加载属性值。

4. 测试注解

这些注解主要用于简化Spring Boot应用的单元测试或集成测试。

  • @RunWith(SpringRunner.class):与JUnit结合使用,用于启动Spring容器。
  • @SpringBootTest:用于创建整个Spring应用上下文,适用于集成测试。
  • @WebMvcTest:用于测试Web层,只会加载Spring MVC相关组件。
  • @DataJpaTest:用于测试JPA相关代码。

5. 控制器注解

这些注解主要用于Web层的请求处理。

  • @RequestMapping:标记类或方法,处理特定的HTTP请求。
  • @GetMapping:处理HTTP GET请求。
  • @PostMapping:处理HTTP POST请求。
  • @PutMapping:处理HTTP PUT请求。
  • @DeleteMapping:处理HTTP DELETE请求。
  • @PatchMapping:处理HTTP PATCH请求。
  • @ResponseBody:用于将方法的返回值直接写入HTTP响应体中。
  • @RequestBody:用于将HTTP请求体中的内容绑定到方法参数上。
  • @Validated:用于请求的数据对象的校验。
  • @PathVariable:用于请求URI上的参数绑定。

6. 安全和认证注解

这些注解用于处理安全性和用户认证。

  • @Secured:用于限制只有拥有特定权限的用户才能访问的方法或类。
  • @PreAuthorize@PostAuthorize:基于SpEL表达式来授权。

7. 切面相关注解

  • @EnableAspectJAutoProxy:启用AspectJ自动代理功能。通常放在主配置类或启动类上。
  • @Aspect:标记一个类为切面类,其中可以包含多个通知(Advice)。
  • @Pointcut:定义一个切入点表达式,用于匹配目标对象中的连接点(Joinpoint)。
  • @Before:声明前置通知。
  • @After:声明后置通知。
  • @AfterReturning:声明返回后通知。
  • @AfterThrowing:声明异常后通知。
  • @Around:声明环绕通知。

8. API文档相关注解(需引入swagger)

  • @ApiModel:声明实体对象类。
  • @ApiModelProperty:声明对象属性。
  • @Api:声明一个接口类。
  • @ApiOperation:声明一个具体接口。
  • @ApiParam:声明接口参数属性。

9. 其他注解

还有一些注解用于特定的功能或场景:

  • @Profile:用于指定配置文件,可以激活特定环境下的配置。
  • @Cacheable@CachePut@CacheEvict:用于与Spring Cache集成,实现缓存功能。
  • @Async:用于声明异步方法。
  • @Scheduled:用于定时任务。
  • @ExceptionHandler:声明一个全局异常处理方法(方法需声明在带有@ControllerAdvice注解的类当中)。
  • @ResponseStatus:声明异常返回http编码(方法需声明在带有@ControllerAdvice注解的类当中)。

以上列举的只是部分常用注解,实际上Spring Boot框架中有更多的注解可供使用。这些注解共同作用于Spring Boot应用中,使得开发变得更加高效和便捷。后续还会继续补充...

相关推荐
武子康10 小时前
大数据-120 - Flink滑动窗口(Sliding Window)详解:原理、应用场景与实现示例 基于时间驱动&基于事件驱动
大数据·后端·flink
IccBoY10 小时前
Java采用easyexcel组件进行excel表格单元格的自动合并
java·开发语言·excel
用户2811130222110 小时前
分布式事务总结
后端
Hello.Reader10 小时前
Flink 广播状态(Broadcast State)实战从原理到落地
java·大数据·flink
xuejianxinokok10 小时前
新版本 python 3.14 性能到底如何?
后端·python
Ray6610 小时前
代理模式
后端
考虑考虑10 小时前
Jpa中的枚举类型
spring boot·后端·spring
peter52710 小时前
LangChain4j入门使用
后端
ArabySide10 小时前
【ASP.NET Core】分布式场景下ASP.NET Core中JWT应用教程
分布式·后端·asp.net core
风起云涌~11 小时前
【Java】浅谈ServiceLoader
java·开发语言