吃透 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数据给到前端
相关推荐
斯维赤1 分钟前
OCR到底是接入第三方API 还是自己封装?
java·ocr
码智社18 分钟前
Redis 哨兵模式详解:从原理到生产实践
java·redis
救救孩子把27 分钟前
结构化输出为何“格式正确、答案错误”?JSON Schema 的能力边界
android·java·json·agent·agent服务
猿究院--Cu-Sn合金30 分钟前
Spring Boot + DeepSeek 求职 Agent 实践:工具注册、多轮调用与简历 JD 对比
数据库·人工智能·spring boot·后端·deepseek
silvamux_44 分钟前
微头条爆款体平台适配实测:把交付要求变成可计算的指标
java·线性代数·算法·决策树·矩阵
论文复现现场44 分钟前
DeepSeek V4.1 Flash 和 V4 Pro 有什么区别?API 价格、性能与迁移建议
java·服务器·人工智能·python·大模型api·deepseek·deepseek v4.1
郭小李1 小时前
转发与重定向
java·服务器·数据库
你看我名字1 小时前
数眼智能 Search + Reader 实战:联网问答怎样避免“搜到了,却引用错了”
android·java·开发语言
MetaLite2 小时前
Spring Boot 加了 @Valid,嵌套参数为什么还没校验?
java·spring boot·后端
半杯咖啡半行码2 小时前
QML与 Qt Quick入门实战:从零基础到 C++ 双向通信详解
java·qt·交互