三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

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

吃透 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名称精准指定注入对象
@ResourceJSR规范注解,默认先按名称注入,找不到再按类型注入
@Value("${配置项}")读取properties/yml配置文件中的常量值,用于普通基本类型、字符串赋值

4. Bean生命周期与作用域

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

二、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数据给到前端
← 返回列表