请注意,本文编写于 51 天前,最后修改于 46 天前,其中某些信息可能已经过时。
目录
一、核心注解
二、分层注解(用于分层结构)
三、依赖注入
四、MVC 与 Web 层
五、配置与属性绑定
六、AOP(面向切面编程)
七、事务管理
八、数据访问(JPA / MyBatis)
九、缓存注解
十、异步与定时任务
十一、安全控制(Spring Security)
十二、测试相关注解
十三、其他常用注解
✨总结
本文整理了 Spring Boot 开发中最常用的注解,涵盖核心配置、MVC 层、事务、AOP、数据访问、缓存、异步任务、安全、测试等方面,快速构建高质量的企业级应用。
一、核心注解
| 注解 | 说明 |
|---|
@SpringBootApplication | 标记主类,组合了 @Configuration、@EnableAutoConfiguration、@ComponentScan |
@Configuration | 标记配置类,替代 XML 配置文件 |
@EnableAutoConfiguration | 启用自动配置机制 |
@ComponentScan | 指定扫描组件的包路径 |
@Component | 通用组件注解,标记类为 Spring 管理的 Bean |
@Bean | 在配置类中定义 Bean |
@Lazy | 延迟初始化 Bean(默认单例在启动时初始化) |
二、分层注解(用于分层结构)
| 注解 | 说明 |
|---|
@Controller | 标记 MVC 控制器类 |
@RestController | 组合 @Controller + @ResponseBody,返回 JSON/XML |
@Service | 标记业务逻辑层类 |
@Repository | 标记数据访问层(DAO)类,并自动处理数据库异常 |
三、依赖注入
| 注解 | 说明 |
|---|
@Autowired | 自动注入依赖(按类型匹配) |
@Qualifier | 与 @Autowired 配合使用,按名称注入 |
@Resource | JDK 注解,按名称或类型注入 |
@Value | 注入配置文件属性(如 @Value("${app.name}")) |
@Primary | 当存在多个同类型 Bean 时,指定优先注入的 Bean |
四、MVC 与 Web 层
| 注解 | 说明 |
|---|
@RequestMapping | 映射 HTTP 请求(URL、方法、参数等) |
@GetMapping / @PostMapping / @PutMapping / @DeleteMapping / @PatchMapping | 对应不同的 HTTP 方法 |
@ResponseBody | 将方法返回值作为响应体(非视图) |
@RequestBody | 接收请求体数据(如 JSON) |
@PathVariable | 获取 URL 路径参数(如 /user/{id}) |
@RequestParam | 获取请求参数(如 ?name=xxx) |
@RequestHeader | 获取请求头信息 |
@CookieValue | 获取 Cookie 值 |
@CrossOrigin | 允许跨域请求 |
@ModelAttribute | 绑定请求参数到模型对象 |
@SessionAttributes | 将模型数据存储到 Session |
@ResponseStatus | 指定响应的 HTTP 状态码 |
@ExceptionHandler | 处理控制器中的异常 |
@ControllerAdvice | 全局异常处理与全局数据绑定 |
五、配置与属性绑定
| 注解 | 说明 |
|---|
@ConfigurationProperties | 将配置文件属性绑定到类 |
@EnableConfigurationProperties | 启用指定类的配置属性绑定 |
@PropertySource | 加载自定义配置文件 |
@Profile | 指定 Bean 在特定环境下生效(如 @Profile("dev")) |
@Conditional | 条件化 Bean 创建的通用注解 |
@ConditionalOnBean / @ConditionalOnMissingBean | 当存在/不存在指定 Bean 时生效 |
@ConditionalOnClass / @ConditionalOnMissingClass | 当类路径存在/不存在时生效 |
@ConditionalOnProperty | 当配置属性满足条件时生效 |
六、AOP(面向切面编程)
| 注解 | 说明 |
|---|
@Aspect | 标记类为切面类 |
@Pointcut | 定义切入点(如 execution(* com.example.service.*.*(..))) |
@Before | 前置通知(方法执行前) |
@After | 后置通知(方法执行后) |
@AfterReturning | 返回后通知(正常返回) |
@AfterThrowing | 异常通知(发生异常后) |
@Around | 环绕通知(可控制目标方法执行) |
七、事务管理
| 注解 | 说明 |
|---|
@Transactional | 开启事务管理,可配置传播行为与隔离级别 |
@EnableTransactionManagement | 启用事务(Spring Boot 默认开启) |
八、数据访问(JPA / MyBatis)
| 注解 | 说明 |
|---|
@Entity | 标记 JPA 实体类 |
@Table | 指定实体类对应的表名 |
@Id | 标记主键 |
@GeneratedValue | 主键生成策略 |
@Column | 指定列名 |
@Transient | 忽略字段 |
@Repository | DAO 层注解 |
@Query / @Param | JPA 自定义查询与参数绑定 |
@Mapper | MyBatis 映射器接口 |
@Insert / @Update / @Delete / @Select | MyBatis 注解式 SQL |
九、缓存注解
| 注解 | 说明 |
|---|
@EnableCaching | 启用缓存功能 |
@Cacheable | 标记方法结果可缓存 |
@CachePut | 执行方法并更新缓存 |
@CacheEvict | 删除缓存 |
@Caching | 组合多个缓存操作 |
十、异步与定时任务
| 注解 | 说明 |
|---|
@EnableAsync | 启用异步方法支持 |
@Async | 声明方法异步执行 |
@EnableScheduling | 启用定时任务支持 |
@Scheduled | 定义定时任务(支持 cron 表达式) |
十一、安全控制(Spring Security)
| 注解 | 说明 |
|---|
@EnableWebSecurity | 启用 Web 安全配置 |
@PreAuthorize | 方法执行前进行权限验证 |
@PostAuthorize | 方法执行后验证权限 |
@Secured | 限定访问角色(如 @Secured("ROLE_ADMIN")) |
十二、测试相关注解
| 注解 | 说明 |
|---|
@SpringBootTest | 启动完整 Spring Boot 测试环境 |
@Test | JUnit 测试方法注解 |
@MockBean | 替换 Bean 为 Mock 对象 |
@AutoConfigureMockMvc | 自动配置 MockMvc |
@DataJpaTest | 测试 JPA 层组件 |
@WebMvcTest | 测试 MVC 控制器(仅加载 Web 层) |
十三、其他常用注解
| 注解 | 说明 |
|---|
@Order | 指定加载顺序(值越小优先) |
@Scope | 指定 Bean 作用域(singleton、prototype、request、session) |
@Deprecated | 标记过时 |
@NonNull / @NotNull | 参数或返回值非空校验 |
@Size / @Email | 长度与邮箱格式校验 |
@Valid / @Validated | 启用参数校验 |
@EventListener | 声明事件监听方法 |
@EnableFeignClients / @FeignClient | 启用并定义 Feign 客户端 |
@LoadBalanced | 启用 RestTemplate 负载均衡 |
@RegisterReflectionForBinding | 注册类支持 JSON 反射绑定 |
@Slf4j | Lombok 日志注解 |
@RequiredArgsConstructor | 生成包含 final 字段的构造函数 |
@NoArgsConstructor / @AllArgsConstructor | 生成无参 / 全参构造函数 |
✨总结
Spring Boot 通过注解驱动的方式,大幅简化了配置与开发流程。掌握这些常用注解,不仅能写出结构清晰、可维护性高的应用,还能充分发挥 Spring Boot 的自动化与约定优于配置的优势。
本文作者:zjx171
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!