吃透 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 分钟前
Spring Boot 4 旅游主题实战教程 阶段四:缓存与底层进阶
spring boot·redis·缓存·性能优化·log4j·旅游·性能
captain37614 分钟前
文件与IO(2)
java·开发语言·windows·java-ee
杨运交29 分钟前
[065][缓存模块]Hibernate二级缓存自定义实现:基于Spring Cache的多级缓存适配器
spring·缓存·hibernate
mqiqe36 分钟前
AgentScope Java 2.0 集成 Chat Completions Web:一行依赖让你的 Agent 变身 OpenAI 兼容服务
java·开发语言·前端
qq_589666051 小时前
Java微服务介绍及应用
java·开发语言·微服务
OPEN-F1 小时前
C++进阶教程:运算符重载与类型转换
java·c++·算法
小小数媒成员1 小时前
存储器层级结构
java·服务器·前端
牧杉-惊蛰1 小时前
将数组对象根据自定义排列
java·开发语言·算法
砚底藏山河1 小时前
【量化纯GET实战 #04】批量快照:一次 HTTP GET 取多只股票
java·python·金融·eclipse
君顾11 小时前
家校托管互通:从需求分析到系统架构的落地实践
java·开发语言·托管