京东自营 + 国补 iPhone 历史最低价          国家补贴 享8折

Spring Boot 最常用注解

Spring Boot 注解是 Java 后端面试中的高频核心考点,尤其是分类中与「核心启动」「分层开发」「MVC 交互」「依赖注入」「事务 / 缓存」相关的注解,几乎是面试必问内容。面试官考察注解的目的,不仅是看你是否 “认识注解”,更看重你是否理解注解的底层逻辑、使用场景、注意事项,以及能否结合实际开发场景灵活运用。

一、核心注解

  1. @SpringBootApplication:标记主类,组合了 @Configuration@EnableAutoConfiguration@ComponentScan
  2. @Configuration:标记配置类,替代 XML 配置文件
  3. @EnableAutoConfiguration:启用自动配置机制
  4. @ComponentScan:指定扫描组件的包路径
  5. @Component:通用组件注解,标记类为 Spring 管理的 Bean
  6. @Bean:在配置类中定义 Bean
  7. @Lazy:延迟初始化 Bean(默认单例在启动时初始化)

二、分层注解(替代 @Component)

  1. @Controller:标记 MVC 控制器类
  2. @RestController:组合 @Controller@ResponseBody,返回 JSON/XML
  3. @Service:标记业务逻辑层服务类
  4. @Repository:标记数据访问层(DAO)类,自动处理数据库异常

三、依赖注入

  1. @Autowired:自动注入依赖(按类型匹配)
  2. @Qualifier:与 @Autowired 配合,按名称注入
  3. @Resource:JDK 注解,按名称或类型注入
  4. @Value:注入配置文件中的属性值(如 @Value("${app.name}")
  5. @Primary:当存在多个同类型 Bean 时,指定优先注入的 Bean

四、MVC 与 Web

  1. @RequestMapping:映射 HTTP 请求(URL、方法、参数等)
  2. @GetMapping:处理 HTTP GET 请求(简化 @RequestMapping(method = RequestMethod.GET)
  3. @PostMapping:处理 HTTP POST 请求
  4. @PutMapping:处理 HTTP PUT 请求
  5. @DeleteMapping:处理 HTTP DELETE 请求
  6. @PatchMapping:处理 HTTP PATCH 请求
  7. @ResponseBody:将方法返回值直接作为响应体(非视图)
  8. @RequestBody:接收 HTTP 请求体(如 JSON 数据)
  9. @PathVariable:获取 URL 路径中的参数(如 /user/{id} 中的 id
  10. @RequestParam:获取请求参数(如 ?name=xxx
  11. @RequestHeader:获取请求头信息
  12. @CookieValue:获取 Cookie 中的值
  13. @CrossOrigin:允许跨域请求
  14. @ModelAttribute:绑定请求参数到模型对象
  15. @SessionAttributes:将模型数据存储到会话中
  16. @ResponseStatus:指定响应的 HTTP 状态码
  17. @ExceptionHandler:处理控制器中的异常
  18. @ControllerAdvice:全局异常处理、全局数据绑定等

五、配置与属性绑定

  1. @ConfigurationProperties:将配置文件属性绑定到类(配合 @Component@EnableConfigurationProperties
  2. @EnableConfigurationProperties:启用指定类的配置属性绑定
  3. @PropertySource:加载自定义配置文件(如 @PropertySource("classpath:custom.properties")
  4. @Profile:指定 Bean 在特定环境下生效(如 @Profile("dev")
  5. @Conditional:基于条件判断是否创建 Bean(派生注解如下)
  6. @ConditionalOnBean:当存在指定 Bean 时生效
  7. @ConditionalOnMissingBean:当不存在指定 Bean 时生效
  8. @ConditionalOnClass:当类路径存在指定类时生效
  9. @ConditionalOnMissingClass:当类路径不存在指定类时生效
  10. @ConditionalOnProperty:当配置属性满足条件时生效

六、AOP 相关

  1. @Aspect:标记类为切面类
  2. @Pointcut:定义切入点(如 execution(* com.example.service.*.*(..))
  3. @Before:前置通知(目标方法执行前)
  4. @After:后置通知(目标方法执行后,无论是否异常)
  5. @AfterReturning:返回后通知(目标方法正常返回后)
  6. @AfterThrowing:异常通知(目标方法抛出异常后)
  7. @Around:环绕通知(覆盖目标方法执行,需手动调用 proceed()

七、事务管理

  1. @Transactional:标记方法或类需要事务管理(可指定传播行为、隔离级别等)
  2. @EnableTransactionManagement:启用事务管理(Spring Boot 自动配置,通常无需显式添加)

八、数据访问(Spring Data JPA/MyBatis)

  1. @Entity:标记 JPA 实体类(对应数据库表)
  2. @Table:指定实体类对应的数据库表名
  3. @Id:标记实体类的主键
  4. @GeneratedValue:指定主键生成策略(如自增)
  5. @Column:指定实体属性对应的数据库列名
  6. @Transient:标记属性不映射到数据库列
  7. @Repository:数据访问层注解(见分层注解)
  8. @Query:JPA 中自定义 SQL 或 JPQL 查询
  9. @Param:在 SQL 语句中绑定参数(如 @Query("SELECT u FROM User u WHERE u.name = :name")
  10. @Mapper:MyBatis 映射器接口注解
  11. @Insert@Update@Delete@Select:MyBatis 注解式 SQL

九、缓存

  1. @EnableCaching:启用缓存功能
  2. @Cacheable:标记方法结果可缓存(如查询结果)
  3. @CachePut:更新缓存(执行方法后更新缓存)
  4. @CacheEvict:清除缓存(如删除数据后)
  5. @Caching:组合多个缓存注解

十、异步与定时任务

  1. @EnableAsync:启用异步方法支持
  2. @Async:标记方法为异步执行
  3. @EnableScheduling:启用定时任务支持
  4. @Scheduled:标记定时任务方法(如 @Scheduled(cron = "0 0 12 * * ?")

十一、安全(Spring Security)

  1. @EnableWebSecurity:启用 Web 安全配置
  2. @PreAuthorize:方法执行前验证权限(如 @PreAuthorize("hasRole('ADMIN')")
  3. @PostAuthorize:方法执行后验证权限
  4. @Secured:指定方法所需的角色(如 @Secured("ROLE_ADMIN")

十二、测试

  1. @SpringBootTest:Spring Boot 测试主注解,加载完整上下文
  2. @Test:JUnit 测试方法注解
  3. @MockBean:替换容器中的 Bean 为 Mock 对象
  4. @AutoConfigureMockMvc:自动配置 MockMvc(用于测试控制器)
  5. @DataJpaTest:测试 JPA 相关组件(只加载必要的 Bean)
  6. @WebMvcTest:测试 MVC 控制器(只加载 Web 层 Bean)

十三、其他常用注解

  1. @Order:指定 Bean 加载或执行的顺序(值越小越优先)
  2. @Scope:指定 Bean 的作用域(如 singletonprototyperequestsession
  3. @Deprecated:标记方法或类为过时
  4. @NonNull:标记参数或返回值不能为 null(Lombok 注解)
  5. @NotNull:验证参数不能为 null(javax.validation 注解)
  6. @Size:验证字符串或集合的长度范围(如 @Size(min=2, max=10)
  7. @Email:验证字符串为合法邮箱格式
  8. @Valid:触发参数的校验(配合 javax.validation 注解)
  9. @Validated:开启类级别的参数校验
  10. @EventListener:标记方法为事件监听器
  11. @EnableFeignClients:启用 Feign 客户端(服务调用)
  12. @FeignClient:定义 Feign 客户端接口
  13. @LoadBalanced:标记 RestTemplate 启用负载均衡(配合 Spring Cloud)
  14. @RegisterReflectionForBinding:注册类以支持 JSON 反射绑定
  15. @Slf4j:Lombok 注解,自动生成日志对象
  16. @RequiredArgsConstructor:Lombok 注解,生成包含 final 字段的构造函数
  17. @NoArgsConstructor@AllArgsConstructor:Lombok 注解,生成无参 / 全参构造函数

这些注解覆盖了 Spring Boot 开发的核心场景,实际开发中可根据需求灵活组合使用。其中,@SpringBootApplication@RestController@Service@Autowired@RequestMapping等是最基础且高频使用的注解。

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java