吃透 Spring 高频注解(包含SpringMVC Spring Boot)

一、核心容器注解(Spring IoC 依赖注入、Bean 管理)

1. 组件注册注解(将类交给Spring容器管理,生成Bean)

注解 作用说明
@Component 通用组件注解,不属于三层架构的普通工具类使用,其余三个是它的衍生注解
@Controller 标注控制器层(MVC控制层),接收前端请求
@Service 标注业务逻辑层,封装业务代码
@Repository 标注数据访问层(DAO层),操作数据库

补充:以上四个注解功能一致,仅用于代码分层区分语义;不加value默认类名首字母小写作为bean名称。

2. 包扫描注解

@ComponentScan

  • 作用:指定Spring需要扫描的包路径,自动识别包下带@Component系列注解的类,注册为Bean
  • SpringBoot项目内置默认扫描主启动类同级及下级所有包,一般无需手动配置

3. 依赖注入注解(给属性赋值、自动装配Bean)

注解 作用说明
@Autowired 类型自动注入Bean,Spring官方注解;可标注属性、构造方法、set方法;required=false允许注入为空
@Qualifier("beanName") 配合@Autowired使用,多个同类型Bean时,通过Bean名称精准指定注入对象
@Resource JSR规范注解,默认先按名称注入,找不到再按类型注入
@Value("${配置项}") 读取properties/yml配置文件中的常量值,用于普通基本类型、字符串赋值

4. Bean生命周期与作用域

注解 作用说明
@Scope 指定Bean作用域:singleton单例(默认)、prototype多例、request、session
@PostConstruct Bean创建完成后执行初始化方法
@PreDestroy Bean销毁前执行销毁方法

二、SpringMVC 常用web注解(请求接收、响应处理)

1. 请求映射注解

注解 作用说明
@RequestMapping 通用请求地址映射,可指定请求方式、路径、参数条件
@GetMapping 简写,仅匹配GET请求
@PostMapping 简写,仅匹配POST请求
@PutMapping 简写,匹配PUT修改请求
@DeleteMapping 简写,匹配DELETE删除请求

2. 获取请求参数注解

注解 作用场景
@RequestParam 获取普通请求参数(url拼接参数、表单参数)
@PathVariable 路径变量取值,例:/user/{id} 获取id值
@RequestBody 接收前端JSON格式请求体,自动封装为Java对象(POST常用)
@RequestHeader 获取请求头信息
@CookieValue 获取Cookie数据

3. 响应与视图注解

注解 作用说明
@ResponseBody 将返回值直接转为JSON字符串响应前端,不跳转页面
@RestController 组合注解 = @Controller + @ResponseBody;接口开发最常用,所有方法均返回JSON
@CrossOrigin 解决前后端跨域问题

三、Spring事务注解

@Transactional

  1. 标注位置:业务层Service类/方法上
  2. 核心作用:开启声明式事务,方法执行出错自动回滚数据库操作
  3. 常用属性:
  • propagation:事务传播行为
  • isolation:事务隔离级别
  • rollbackFor:指定触发回滚的异常类型

四、SpringBoot 专属常用注解

注解 作用
@SpringBootApplication 启动类核心注解,组合:@Configuration + @EnableAutoConfiguration + @ComponentScan
@Configuration 将当前类标记为配置类,可使用@Bean注册自定义Bean
@Bean 写在配置类方法上,将方法返回对象注册为Spring容器Bean
@ConfigurationProperties(prefix = "xxx") 批量读取yml/properties配置文件,绑定实体类属性
@EnableXXX 开启各类自动配置:@EnableWebMvc@EnableTransactionManagement

五、AOP面向切面编程注解

注解 作用
@Aspect 标注当前类为切面类
@Before 前置通知:目标方法执行前触发
@After 后置通知:目标方法执行完毕后触发(无论是否异常)
@AfterReturning 返回通知:方法正常执行成功后触发
@AfterThrowing 异常通知:方法抛出异常时触发
@Around 环绕通知:包裹目标方法,可手动控制方法执行
@Pointcut 定义切入点表达式,统一配置要拦截的方法范围

六、注解使用简易数据流总结

  1. @SpringBootApplication启动项目 → 自动扫描包
  2. @Service/@Controller/@Repository将类交给容器生成Bean
  3. @Autowired完成依赖注入装配
  4. @GetMapping/@PostMapping接收前端请求
  5. @RequestBody接收JSON参数,Service层添加@Transactional管控事务
  6. @RestController返回JSON数据给到前端
相关推荐
许彰午13 分钟前
52-useWebSocket自动重连
java·低代码·架构
青山木15 分钟前
RocketMQ 入门到原理(一):整体架构与消息的生命周期
java·分布式·后端·中间件·架构·rocketmq
黑马程序员毕设22 分钟前
基于微信小程序的二手交易平台设计与实现报告
前端·人工智能·spring boot·后端·考研
xcl092522 分钟前
上海24小时自助健身房系统软件开发实战与架构解析
java·spring boot
苏渡苇25 分钟前
Spring Insight 里如何把 Span 收成一条链路
spring boot·spring·spring cloud·系统监控·apm
张宜强40 分钟前
023 SpringBoot实现萌宠集市
java·课程设计
花哥码天下42 分钟前
docker流水线
java
十二同学啊1 小时前
Drools规则引擎:让复杂业务规则从代码中解耦
java·后端·开源
熊猫猫猫猫猫猫1 小时前
Lambda Fusion:面向企业级应用与 AI 智能体开发的开源微服务框架
spring boot
周先生FullStack1 小时前
Mac + 容器本地 MySQL/Redis 环境搭建与网络原理实战
java·spring boot·微服务·容器·架构·个人开发