Spring Boot中常用的注解及其作用

以下是Spring Boot中常用的注解及其作用的分类整理:


1. 核心注解

  • @SpringBootApplication
    标记主启动类,组合了@Configuration@EnableAutoConfiguration@ComponentScan,用于启动Spring Boot应用。

2. 配置相关注解

  • @Configuration
    声明一个类为配置类,替代XML配置文件。
  • @Bean
    在配置类中定义Bean,方法返回的对象由Spring容器管理。
  • @PropertySource
    加载指定的属性文件(如application.properties)到Spring环境。
  • @Value
    注入配置文件中的属性值到字段或方法参数。
  • @ConfigurationProperties
    将配置文件中的属性批量绑定到Java对象。
  • @EnableConfigurationProperties
    启用@ConfigurationProperties功能。

3. Spring MVC相关注解

  • @RestController
    组合@Controller@ResponseBody,用于定义RESTful控制器。
  • @RequestMapping
    映射HTTP请求到控制器方法,可指定路径、方法类型等。
  • @GetMapping/@PostMapping/@PutMapping/@DeleteMapping
    简化版请求映射,分别对应GET、POST、PUT、DELETE方法。
  • @PathVariable
    从URL路径中提取参数(如/user/{id})。
  • @RequestParam
    从请求参数中获取值(如?name=abc)。
  • @RequestBody
    将请求体中的JSON/XML数据反序列化为Java对象。
  • @ResponseBody
    将方法返回值序列化为JSON/XML响应。
  • @CrossOrigin
    允许跨域请求(CORS)。

4. 数据访问相关注解

JPA/Hibernate
  • @Entity
    标记类为JPA实体,对应数据库表。
  • @Table
    指定实体对应的数据库表名。
  • @Id
    标记实体类的主键字段。
  • @GeneratedValue
    配置主键生成策略(如自增)。
  • @Column
    定义字段与数据库列的映射关系。
Spring Data JPA
  • @Repository
    标记数据访问层(DAO)组件。
  • @Transactional
    声明事务管理(可加在类或方法上)。
MyBatis
  • @Mapper
    标记MyBatis的Mapper接口。
  • @MapperScan
    配置扫描Mapper接口的包路径。

5. 依赖注入相关注解

  • @Autowired
    自动注入Bean(按类型)。
  • @Qualifier
    按名称指定注入的Bean。
  • @Component
    通用注解,标记类为Spring组件(Bean)。
  • @Service/@Repository/@Controller
    分别标记服务层、数据层、控制层组件,功能同@Component

6. AOP相关注解

  • @Aspect
    声明一个切面类。
  • @Pointcut
    定义切点表达式。
  • @Before/@After/@Around/@AfterReturning/@AfterThrowing
    定义通知类型(在方法执行前、后等时机执行)。

7. 定时任务与异步处理

  • @EnableScheduling
    启用定时任务功能。
  • @Scheduled
    配置方法执行周期(如cron表达式)。
  • @EnableAsync
    启用异步方法调用。
  • @Async
    标记方法为异步执行。

8. 测试相关注解

  • @SpringBootTest
    标记Spring Boot集成测试类,加载完整应用上下文。
  • @Test
    JUnit测试方法。
  • @MockBean/@SpyBean
    模拟或监视Bean(用于测试环境)。
  • @AutoConfigureMockMvc
    自动配置MockMvc,用于模拟HTTP请求测试。

9. 条件注解(自动配置)

  • @ConditionalOnProperty
    根据配置文件属性决定是否创建Bean。
  • @ConditionalOnClass/@ConditionalOnMissingClass
    根据类是否存在决定Bean的创建。
  • @ConditionalOnBean/@ConditionalOnMissingBean
    根据其他Bean是否存在决定Bean的创建。

10. 缓存相关注解

  • @EnableCaching
    启用缓存功能。
  • @Cacheable
    缓存方法返回值(根据键)。
  • @CacheEvict
    清除缓存。

11. 其他注解

  • @Profile
    根据环境(如dev/prod)激活配置。
  • @Import
    导入其他配置类。
  • @Lazy
    延迟初始化Bean。
  • @Primary
    当存在多个同类Bean时,优先注入标记的Bean。
  • package com;
    
    import com.common.exception.RRException;
    import com.common.utils.WechatProperties;
    import com.common.validator.group.AddGroup;
    import com.common.validator.group.UpdateGroup;
    import org.aspectj.lang.annotation.Around;
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Before;
    import org.aspectj.lang.annotation.Pointcut;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.context.properties.EnableConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.stereotype.Component;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.RestControllerAdvice;
    
    import javax.annotation.PostConstruct;
    import javax.annotation.Resource;
    import javax.validation.GroupSequence;
    import java.lang.annotation.*;
    /*
     * AOP相关注解
     */
    //声明一个切面类,用于将横切关注点(如日志、事务等)模块化。需配合@Component注册为Spring Bean
    @Aspect
    //环绕通知,拦截指定方法的执行,可自定义方法前后的增强逻辑。execution表达式定义切入点规则
    @Around("execution(* com.common.utils.RedisUtils.*(..))")
    //前置通知,在目标方法执行前执行增强逻辑。dataFilterCut()需通过@Pointcut定义
    @Before("dataFilterCut()")
    //定义切入点,支持基于注解的匹配。例如@annotation(com.common.annotation.DataFilter)表示拦截带有该注解的方法
    @Pointcut("@annotation(com.common.annotation.DataFilter)")
    
    /*
     * Bean管理注解
     */
    //自动注入依赖的Bean,默认按类型匹配。适用于构造方法、字段或Setter方法
    @Autowired
    //声明一个方法返回的对象为Spring Bean,通常用于配置类(@Configuration类中)
    @Bean
    //通用组件注解,标记类为Spring管理的Bean,支持自动扫描
    @Component
    //JSR-250规范注解,按名称注入Bean。与@Autowired相比,强调按名称匹配
    @Resource(name="redisTemplate")
    
    /*
     * 配置类注解
     */
    //标记类为配置类,其中可定义@Bean方法或导入其他配置
    @Configuration
    //将配置文件(如application.yml)中以指定前缀(如wechat)开头的属性绑定到类的字段
    @ConfigurationProperties(prefix="wechat)
    //启用指定配置类的属性绑定功能,通常与@ConfigurationProperties配合使用
    @EnableConfigurationProperties(WechatProperties.class)
    
    /*
     * 异常处理注解
     */
    //标记方法为特定异常(如RRException)的处理逻辑
    @ExceptionHandler(RRException.class)
    //全局异常处理类,结合@ExceptionHandler统一处理控制器层异常
    @RestControllerAdvice
    
    /*
     * ‌元注解与生命周期
     */
    //标记注解是否包含在JavaDoc中,属于元注解^[标准注解]^
    @Documented
    //指定注解的保留策略为运行时,可通过反射读取^[标准注解]^
    @Retention(RetentionPolicy.RUNTIME)
    //标记方法在Bean初始化后执行,用于生命周期回调^[标准注解]^
    @PostConstruct
    //限定注解只能用于方法级别^[标准注解]
    @Target(ElementType.METHOD)
    
    /*
     * 其他注解
     */
    //定义验证分组的执行顺序,用于参数校验场景^[验证规范]
    @GroupSequence({AddGroup.class, UpdateGroup.class})
    public class Test {
    
    }
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值