一、核心容器注解(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
- 标注位置:业务层Service类/方法上
- 核心作用:开启声明式事务,方法执行出错自动回滚数据库操作
- 常用属性:
- 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 | 定义切入点表达式,统一配置要拦截的方法范围 |
六、注解使用简易数据流总结
@SpringBootApplication启动项目 → 自动扫描包@Service/@Controller/@Repository将类交给容器生成Bean@Autowired完成依赖注入装配@GetMapping/@PostMapping接收前端请求@RequestBody接收JSON参数,Service层添加@Transactional管控事务@RestController返回JSON数据给到前端