Skip to content

常用注解速查


Spring Boot 核心

注解作用说明
@SpringBootApplication入口注解,组合了 @Configuration + @EnableAutoConfiguration + @ComponentScan放在 main() 方法所在类上
@Configuration标记一个类为配置类(类比 XML 配置)用在定义 @Bean 的类上
@EnableAutoConfiguration自动配置Spring Boot 的核心,自动推断你需要什么配置
@ComponentScan扫描指定包下的组件默认扫描当前包及其子包

组件注册

注解作用类比
@Component通用组件任意类注册为 Bean
@Service业务逻辑层类似 @Component,语义明确
@Repository数据访问层类似 @Component,Spring 会转换数据访问异常
@RestController控制器 + 响应体@Controller + @ResponseBody
@Controller控制器(返回视图)对应 MVC 的 Controller
@Bean方法级别,声明返回值为一个 Bean用在 @Configuration 类中

依赖注入

注解作用类比
@Autowired按类型注入Laravel 的构造器自动解析
@Qualifier指定 Bean 名称注入当有多个同类型 Bean 时使用
@Value注入配置值config('app.name')
@Scope指定作用域singleton(默认)/ prototype / request
@Lazy延迟初始化第一次使用时才创建
@Primary多个同类型 Bean 时优先自动装配的首选

HTTP 路由

注解作用类比
@RequestMapping通用请求映射Route::match(['GET', 'POST'], '/uri')
@GetMappingGET 请求Route::get('/uri')
@PostMappingPOST 请求Route::post('/uri')
@PutMappingPUT 请求Route::put('/uri')
@DeleteMappingDELETE 请求Route::delete('/uri')
@PatchMappingPATCH 请求Route::patch('/uri')
@PathVariable路径参数Route::get('/users/{id}')
@RequestParam查询参数$request->input('name')
@RequestBody请求体 JSON$request->all()
@RequestHeader请求头$request->header('User-Agent')
@ResponseBody返回值序列化response()->json()
@ResponseStatus指定响应状态码response()->json([], 201)

数据校验

注解作用
@Valid触发 JSR 校验
@ValidatedSpring 的校验(支持分组)
@NotBlank字符串不为 null 且去掉空格后不为空
@NotEmpty集合/字符串不为空
@NotNull不为 null
@Size(min, max)字符串长度/集合大小范围
@Min / @Max数字范围
@Email邮箱格式
@Pattern正则匹配
@Positive / @PositiveOrZero正数 / 非负数

数据访问

注解作用类比
@Mapper标记 MyBatis Mapper@Repository 的特化
@TableName指定表名protected $table = 'users'
@TableId指定主键$primaryKey = 'id'
@TableField指定字段名protected $fillable
@Transactional声明式事务DB::transaction()
@Select直接写 SQL 查询(MyBatis)DB::select('...')
@Insert直接写 SQL 插入(MyBatis)-

声明式功能

注解作用类比/说明
@Transactional事务管理方法执行前后自动开启/提交/回滚事务
@Cacheable缓存结果Cache::remember()
@CacheEvict清除缓存Cache::forget()
@CachePut更新缓存Cache::put()
@Scheduled定时任务php artisan schedule
@Async异步执行另起线程执行
@EventListener事件监听Event::listen()
@TransactionalEventListener事务事件监听事务提交后触发

AOP

注解作用说明
@Aspect声明切面类需要 @Component 配合
@Before方法执行前前置通知
@After方法执行后最终通知
@AfterReturning方法成功返回后后置通知
@AfterThrowing方法抛出异常后异常通知
@Around包裹整个方法最强大的通知,可控制方法执行

Spring Security

注解作用类比
@EnableWebSecurity启用 Security 配置-
@EnableMethodSecurity启用方法安全-
@PreAuthorize方法执行前权限检查$this->authorize()
@PostAuthorize方法执行后权限检查-
@Secured角色检查(旧版)@PreAuthorize 的简化版
@AuthenticationPrincipal注入当前用户auth()->user()

测试

注解作用说明
@SpringBootTest启动完整测试上下文类比 RefreshDatabase + 完整应用
@WebMvcTest只测试 Web 层只启动 Controller 相关组件
@DataJpaTest只测试 JPA/MyBatis只启动数据访问组件
@MockBean替换为 Mock在测试中模拟某个 Bean
@Test标记测试方法JUnit 5
@BeforeEach每个测试前执行setUp()
@AfterEach每个测试后执行tearDown()

Lombok(省代码)

注解作用
@Data@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor
@Getter / @Setter自动生成 getter/setter
@ToString自动生成 toString()
@EqualsAndHashCode自动生成 equals()hashCode()
@NoArgsConstructor生成无参构造器
@AllArgsConstructor生成全参构造器
@Builder生成 Builder 模式
@Slf4j生成 log 字段
@RequiredArgsConstructor生成 final 字段的构造器

面向 PHP 开发者的 Spring Boot 文档