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
表示开启多线程异步调用

浙公网安备 33010602011771号