Spring Boot 中常见的注解,分类列出

以下是 Spring 和 Spring Boot 中常见的注解分类:

  • Spring Boot 特定注解
  • 核心组件注解
  • 配置相关注解
  • AOP 相关注解
  • 事务管理相关注解
  • 条件加载和懒加载相关注解
  • 事件监听相关注解
  • Web 相关注解
  • 数据绑定相关注解
  • 安全相关注解
  • 测试相关注解

Spring Boot 特定注解

  • @SpringBootApplication

    • 是一个组合注解,包含 @SpringBootConfiguration, @EnableAutoConfiguration, @ComponentScan,用于启动 Spring Boot 应用。
  • @EnableAutoConfiguration

    • 启用 Spring Boot 的自动配置功能,根据项目依赖自动配置 Spring 上下文。
  • @EnableScheduling

    • 启用任务调度,支持定时任务的执行。
  • @EnableAsync

    • 启用异步方法执行的支持,可以通过 @Async 注解标记某些方法异步执行。
  • @EnableCaching

    • 启用缓存功能,允许使用缓存注解如 @Cacheable, @CachePut, @CacheEvict
  • @EnableConfigurationProperties

    • 启用对 @ConfigurationProperties 类的支持,允许将外部配置文件中的属性映射到 POJO 中。

核心组件注解

  • @Component

    • 用于标识一个通用的 Spring 组件,被 Spring 扫描后注册为 Bean。
    • 适用于任何不明确的 Spring 组件。
  • @Service

    • 特殊的 @Component,用于服务层组件的标识。
    • 通常用于表示业务逻辑的服务类,具备更明确的语义。
  • @Repository

    • 特殊的 @Component,用于数据访问层(DAO)组件的标识。
    • 其功能包含数据访问异常的转换,将原始的数据库异常转换为 Spring 的数据访问异常层次结构。
  • @Controller

    • 特殊的 @Component,用于 Spring MVC 控制器组件的标识。
    • 负责处理 HTTP 请求,返回视图。
  • @RestController

    • 相当于 @Controller@ResponseBody 的组合。
    • 用于开发 RESTful 风格的 Web 服务,直接返回 JSON 或 XML 数据,而不是视图页面。

配置相关注解

  • @Configuration

    • 用于定义配置类,通常是定义 @Bean 方法来创建 Bean 实例的地方。
    • 等价于传统的 XML 配置文件。
  • @Bean

    • 通常用于 @Configuration 类中,表示该方法返回一个由 Spring 管理的 Bean。
  • @ComponentScan

    • 用于指定 Spring 组件扫描的包或类,控制扫描范围。
  • @Import

    • 用于导入其他配置类,允许分离配置逻辑。
  • @PropertySource

    • 用于引入外部配置文件,比如 application.properties,使其内容可用于 @Value 注解进行注入。

AOP 相关注解

  • @Aspect

    • 用于定义一个切面(Aspect),配合 AOP(面向切面编程)使用。
  • @Before, @After, @Around, @AfterReturning, @AfterThrowing

    • 切面方法注解,分别表示在方法执行前、后、环绕执行、成功返回、抛出异常后执行某个切面逻辑。

事务管理相关注解

  • @Transactional
    • 用于声明事务的边界,表示某个方法或类需要事务支持。
    • 可以用于控制事务的提交和回滚行为。

条件加载和懒加载相关注解

  • @Conditional

    • 允许在满足特定条件下注册组件或激活某些配置。
  • @Lazy

    • 表示懒加载,当第一次被需要时才会创建 Bean。

事件监听相关注解

  • @EventListener
    • 用于监听 Spring 事件(Application Event)。

Web 相关注解

  • @RequestMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping

    • 用于映射 HTTP 请求到控制器方法。
  • @RequestBody, @ResponseBody

    • @RequestBody: 用于将 HTTP 请求体绑定到方法参数。
    • @ResponseBody: 用于将控制器方法的返回值直接写入 HTTP 响应体,通常用于 JSON 或 XML 响应。
  • @PathVariable, @RequestParam, @RequestHeader

    • @PathVariable: 将 URL 路径中的变量绑定到方法参数。
    • @RequestParam: 绑定请求参数。
    • @RequestHeader: 绑定请求头信息。
  • @SessionAttributes, @ModelAttribute

    • @SessionAttributes: 用于声明哪些模型属性应该存储在会话中。
    • @ModelAttribute: 在请求处理方法执行前添加或修改模型中的属性。

数据绑定相关注解

  • @Autowired

    • 用于自动注入依赖,可以作用于构造函数、方法、字段。
  • @Qualifier

    • 用于指定特定的 Bean 实例,以解决多个候选 Bean 的问题。
  • @Value

    • 用于注入外部配置文件中的属性值到字段或方法参数。
  • @ConfigurationProperties

    • 将外部配置文件中的属性绑定到 Java 类(通常是 POJO)。

安全相关注解

  • @PreAuthorize, @PostAuthorize

    • @PreAuthorize: 方法调用前的权限验证。
    • @PostAuthorize: 方法调用后的权限验证。
  • @Secured, @RolesAllowed

    • @Secured: 基于 Spring Security 的角色访问控制。
    • @RolesAllowed: 基于 JSR-250 的角色访问控制。
  • @EnableWebSecurity

    • 启用 Spring Security 的 Web 安全支持。

测试相关注解

  • @SpringBootTest

    • 启动完整的 Spring Boot 应用上下文,用于集成测试。
  • @MockBean, @SpyBean

    • @MockBean: 用于创建一个 Mockito mock,并注入到 Spring 上下文。
    • @SpyBean: 用于部分 mock 实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值