SpringBoot注解大总结
Controller层注解#
@GetMapping("")#
接受get请求执行注解下的方法(get/delete 请求参数一般拼接到url后面)也可以使用请求体但要规范不能使用请求体
@RequestBody#
1.从http中读请求体中的数据 ,底层是HttpServletRequest 获取
2.自动把JSON字符串映射成java中的对象
@Post/pub#
post/pub 请求参数一般放在请求体里面,且以JSON格式进行传输(post插入请求使用)
@RequestMapping("/depts")#
Target->类上/方法上
类上->提取controller中的一个重复的路径
方法上->定义该接口的请求方法,被对应Mapping,PostMapping替代了
@Controller#
把一个普通类变成一个servlet
@RestController#
组合注解由@Controller和@ResponseBody组合而成
把一个普通的controller类标记为一个servlet
@Get/DeleteMapping#
以kv键值对的方式接受请求,也可以用请求体但不建议使用
@ResponseBody#
响应把java对象转换成JSON对象
@RequestParam#
1.根据指定的k,获取Http URL中的值 value/name属性
2.可以指定是否必传参数,如果指定必传,前端没传响应的参数->400 required
3.给参数指定默认值 defaultValue默认值属性
@PathVariable#
作用:获取URI路径以/分割的路径变量 列:/{id} 。通过kv值传参和通过/传参在一个项目中尽量只使用一个规范一点
@Validated#
添加此注解启动spring-boot-starter-validation数据校验 ,添加在接受前端形参的括号中
DAO层注解#
@JsonFormat()#
@JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss")作用:格式化时间,放在需要被格式化的实体类变量上
@DateTimeFormat#
把请求的字符串时间转换成指定的格式@DateTimeFormat(pattern="yyyy年MM月dd"),前端传空也没问题SpringBoot会判空
@JsonIgnore#
加在属性上 springboot 对象转JSON的时候自动忽略掉该值
@JsonIgnoreProperties#
加在类上,指定多个需要忽略掉转JSON的属性,值就填属性名就行
@JsonInclude#
根据条件决定是否转JSON(使用:属性是null就不转JSON)
@Param("")#
给sql绑定值
@Repository#
@Repository springboot 提供用来标记DAO层和@Mapper没有区别 (加在类上)
@NotNull#
判空注解spring-boot-starter-validation 加载实体类属性上
@Length#
判断字符串长度 spring-boot-starter-validation min max设置范围
@Pattern#
设置正则表达式spring-boot-starter-validation regexp设置
Service层注解#
@Service#
标记此类为service层注入bean
@Transactional#
自动开启事务,提交事务并且回滚事务,SpringBoot默认RuntimeException才会回滚解决方法就是扩大异常范围(可以加在方法或类上,尽量不要加在类上)
@Transactional(rollbackFor = Exception.class)
其他||共用注解#
@SpringBootTest#
专门用来初始化springboot环境,进行单元测试 ,在test目录进行单元测试
@Resource#
属性注入优先使用@Resource
默认按照Bean名字从容器中获取
默认的springBean名字时类对应的小驼峰
@Configuration#
是配置类的特化注解 组合了@component
@Autowired#
一般使用在构造器赋值和set方法赋值时
@AllArgsConstructor#
如果一个SpringBean类中值需要注入很多的其他的Bean对象->优先使用@Autowired->基于lombok是心啊构造器注入@AllArgsConstructor(注入的必须时SpringBean对象)
@ConditionalOnProperty#
如果有该配置才生效没有则不生效
@ConditionalOnProperty(prefix = "zzyl.aliyun", name = {"accessKeyId", "accessKeySecret", "consumerGroupId", "iotInstanceId", "iotInstanceId"})
@ConditionalOnBean()#
当ioc容器有指定bean时才生效
AOP注解#
@Aspect#
此注解用于声明,加上@Component定义切面类
@Around#
@Around("execution(* com.lu.tlias84.service.impl.*.*(..))")
意思是第一个*是返回值,execution(* com.lu.tlias84.service.impl.*.*(..)意思上对com.lu.tlias84.service.impl包下所有类德所有方法进行增强
环绕通知业务方法
即在被通知增强的业务方法调用前后都执行一段编写的切面方法逻辑
需要给切面方法添加参数ProcedingJointPoint 来调用被增强的业务方法
返回值给Object
@Before#
前置通知
即在被通知增强的业务方法执行前先执行切面方法
@After#
后置通知
即在被通知增强的业务方法执行后执行切面方法
@AfterReturning#
返回后通知
被通知增强的业务方法返回后执行逻辑,有异常不会执行
@AfterThrowing#
异常通知
被通知增强的业务方法抛出异常后执行
SpringBoot全局异常处理 #
@ControllerAdvice#
Controller增强器,给Controller层添加统一的操作或处理
@ResponseBody#
返回值自动为json格式
@RestControllerAdvice#
组合注解@RestControllerAdvice组合了@ControllerAdvice和@ResponseBody
@ExceptionHandler #
@ExceptionHandler,指定捕获Controller中抛出的指定类型的异常
@ResponseStatus #
用于指定捕获异常后响应的Http状态码
SpringBoot配置文件#
@Value#
配置文件属性映射到java对象的属性
简单属性映射(只能读八种数据类型外加数组,集合读不了)
@ConfigurationProperties#
> @ConfigurationProperties
prefix指定前缀
多个属性映射
@Async#
这个注解加载方法上表示开启异步调用 配合@EnableAsync使用
@EnableAsync#
表示开启多线程异步调用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix