一、Spring Boot 启动与配置

注解 作用
@SpringBootApplication 启动整个 Spring Boot 项目,一个顶仨
@Configuration 告诉 Spring:这个类是配置文件,里面可以定义 Bean
@ComponentScan 告诉 Spring 去哪个包下找你写的组件(@Service、@Controller 等)
@Bean 把方法的返回值交给 Spring 管理,变成一个可注入的对象
@Import 引入其他配置类,让它们生效
@Profile("dev") 这个类/方法只在 dev 环境下才生效
@ConditionalOnProperty 配置文件里某个属性满足条件,才注册这个 Bean

二、Spring 组件注册

注解 作用
@Component 标记这个类是个 Spring 组件,让 Spring 自动创建对象管理
@Service 标记这个类是业务层,和 @Component 功能一样,但语义上告诉你"这是做业务的"
@Repository 标记这个类是数据访问层,还能自动把数据库异常转成 Spring 的异常
@Controller 标记这个类是控制器,负责接收前端请求(传统网页用)
@RestController = @Controller + @ResponseBody,返回值直接当 JSON 返回(前后端分离必用)
@Scope("prototype") 默认每次注入是同一个对象,加了这个每次注入都是新对象

三、Spring 依赖注入

注解 作用
@Autowired Spring 自动帮你找到对应的对象,塞进这个变量里(按类型找)
@Resource 和 @Autowired 一样是自动注入,但它优先按名字找,找不到再按类型找
@Qualifier 配合 @Autowired 使用,当同类型有多个 Bean 时,指定注入哪一个
@Primary 同类型有多个 Bean 时,标记这个是默认优先注入的
@Value("${key}") 从 application.yml 配置文件里读值,塞到这个变量里
@RequiredArgsConstructor Lombok 自动生成一个构造器,final 字段自动注入,替代 @Autowired

四、Spring MVC 请求处理

注解 作用
@RequestMapping 把一个 URL 路径绑定到某个方法上,前端访问这个路径就走这个方法
@GetMapping 只接收 GET 请求(查数据用)
@PostMapping 只接收 POST 请求(新增数据用)
@PutMapping 只接收 PUT 请求(修改数据用)
@DeleteMapping 只接收 DELETE 请求(删除数据用)
@PathVariable 从 URL 路径里取值,比如 /user/123 里的 123
@RequestParam 从 ? 后面的查询参数取值,比如 ?page=1&size=10
@RequestBody 把前端传的 JSON 数据自动转成 Java 对象
@RequestHeader 从请求头里取值,比如取 Token
@ModelAttribute 把表单数据绑定到对象上
@RestControllerAdvice = @ControllerAdvice + @ResponseBody,全局统一处理所有 Controller 的异常和返回值

五、Spring AOP(面向切面编程)

注解 作用
@Aspect 标记这个类是个切面类,用来统一处理公共逻辑(日志、事务、权限等)
@Pointcut 定义一个切入点,告诉 Spring "哪些方法需要被拦截"
@Before 在目标方法执行之前执行的代码
@After 在目标方法执行之后执行(不管成功失败都执行)
@Around 在目标方法前后都执行,最强大,可以决定方法要不要执行
@AfterReturning 目标方法正常返回后执行
@AfterThrowing 目标方法抛异常后执行

六、Spring 事务

注解 作用
@Transactional 方法里的数据库操作要么全成功,要么全回滚,不会出现数据一半成功一半失败

常见参数:

  • rollbackFor = Exception.class → 遇到任何异常都回滚(不加的话只回滚 RuntimeException)
  • readOnly = true → 告诉数据库"我只查不改",做个性能优化
  • propagation = REQUIRED → 当前有事务就加入,没有就新建(默认行为)

七、Spring 缓存

注解 作用
@EnableCaching 开启缓存功能,不加这个下面的注解都不生效
@Cacheable 执行方法前先看 Redis 里有没有,有就直接返回,不走方法体(查缓存)
@CachePut 不管缓存有没有,方法都执行,然后把结果写进缓存(更新缓存)
@CacheEvict 方法执行后,把指定缓存删掉(清除缓存)

八、Spring 安全

注解 作用
@EnableWebSecurity 开启 Spring Security 安全框架
@PreAuthorize 方法执行之前检查权限,没权限就不让执行
@Secured 和 @PreAuthorize 类似,但功能更简单,只能判断角色

九、Spring 定时任务

注解 作用
@EnableScheduling 开启定时任务功能
@Scheduled 让方法按规则自动执行:fixedRate=每隔多久、cron=按日历规则

十、MyBatis 数据库

注解 作用
@Mapper 标记这个接口是 MyBatis 的 Mapper,Spring 会自动生成实现类
@MapperScan 告诉 Spring 去哪个包下找所有 Mapper 接口
@Select / @Insert / @Update / @Delete 直接在接口方法上写 SQL,不用写 XML
@Param 方法有多个参数时,给每个参数起个名字,SQL 里用 #{名字} 引用
@TableName 告诉 MyBatis-Plus 这个类对应数据库哪张表
@TableId 标记哪个字段是主键
@TableField 标记字段和数据库列的对应关系

十一、Java Bean 校验

注解 作用
@Valid 放在参数上,触发校验,不通过就抛异常(必须配合 @NotNull 等一起用)
@NotNull 这个值不能是 null
@NotBlank 这个字符串不能是 null、不能是空串 ""、不能全是空格 " "
@NotEmpty 字符串/集合/Map 不能为空(和 @NotBlank 比,它允许全是空格)
@Size 长度/个数必须在指定范围内
@Min / @Max 数值必须在指定范围内
@Email 必须是合法的邮箱格式
@Pattern 必须符合你写的正则表达式

十二、Lombok 简化代码

注解 作用
@Data 自动帮你生成 getter、setter、toString、equals、hashCode,省得手写
@Getter / @Setter 只生成 getter 或只生成 setter
@ToString 只生成 toString 方法
@EqualsAndHashCode 只生成 equals 和 hashCode 方法
@NoArgsConstructor 自动生成无参构造器
@AllArgsConstructor 自动生成全参构造器
@RequiredArgsConstructor 自动给 final 字段生成构造器(常用于替代 @Autowired)
@Builder 自动给你一个 builder 模式,方便创建对象
@Slf4j 自动创建一个叫 log 的日志对象,直接用 log.info() 打日志

十三、Java 原生注解

注解 作用
@Override 告诉编译器"我是重写父类方法",写错了方法名编译器会报错提醒你
@Deprecated 标记这个方法/类已经过时了,别人调用会有删除线警告
@SuppressWarnings 压制编译器警告,比如"我知道这里有未使用变量,别提醒我了"
@FunctionalInterface 标记这是函数式接口(只有一个抽象方法),可以用 Lambda 表达式
@Inherited 子类会继承父类的这个注解
@Repeatable 这个注解可以在同一个地方写多次

更多推荐