1. lombok注解:@RequiredArgsConstructor

Spring 依赖注入方式
1.通过 @Autowire、@Resource 等注解注入,
2.通过构造器的方式进行依赖注入。
3.setter注入
4.lombok 的 @RequiredArgsConstructor

在controller或service层的时候,需要注入很多的service接口或者mapper接口,会写很多的自动注入@Autowired或者@Resource注解,使用lombok的@RequiredArgsConstructor注解写在类上可以简化该操作。代码看起来更清晰。

@RestController
@RequiredArgsConstructor
public class UserController extends BaseController {
private final IUserService userService;
}

相关属性:
staticName:返回生成静态方法的名称
onConstructor:列出的所有注解都放在生成的构造方法上
access: 设置构造方法的访问修饰符
PUBLIC, MODULE, PROTECTED, PACKAGE, PRIVATE,NONE;
NONE:表示不生成任何内容或完全缺乏方法。
MODULE:是 Java 9 的新特性。
注意:

1.注入时需要用final定义,或使用@NonNull注解
2.如果注入的类有多个实现,需要用 @Qualifier 注解指定要注入的 bean 实现
3.@RequiredArgsConstructor 是为每个需要特殊处理的字段生成构造函数。 所有未初始化的带有 final 关键字的字段或标有 @NonNull 注解都会获得构造字段;参数的顺序与字段在类中出现的顺序一致。

2.校验注解 spring注解:@Validated, javax 注解 @Valid

@Validated:Spring的注解,是标准JSR-303的一个变种(补充),提供了一个分组功能,可以在入参验证时,根据不同的分组采用不同的验证机制。
@Valid:标准JSR-303规范的标记型注解,用来标记验证属性和方法返回值,进行级联和递归校验。
@Valid/@Validated
@PostMapping
public Respone saveUser(@RequestBody User user){
return Respone.success();
}
@PostMapping
public Respone saveUser(@RequestBody @Valid/@Validated
User user){
return Respone.success();
}

嵌套校验: 一个类中包含了另外一个实体类,需要在上面加@Validated

public class User{
@validated
private List<Card> cardList;
}

3.Spring中的 延迟加载 @Lazy注解

解决:

1.循环依赖问题,使用动态代理创建一个代理类。
2.第一次调用的时候加载。减少IOC的启动时间。项目启动加快。
3.用来解决 Requested bean is currently in creation 的问题

4.hibernate 延迟加载 @Lazy 校验器:hibernate.validator
@Lazy

只有在需要时才去数据库中抓取相应的记录。通过延迟加载技术可以避免过多、过早地加载数据表里的数据,从而降低应用的内存开销。

校验器:
@Length(max = 6 * 10,groups ={Ordinary.class,Loop.class,Update.class})

注解:@RequiredArgsConstructor、 @Validated、 @Valid、 @Lazy的更多相关文章

  1. springmvc的@Validated/@Valid注解使用和BindingResult bindingResult

    关于@Valid和Validated的比较 @Valid是使用hibernate validation的时候使用 @Validated 是只用spring  Validator 校验机制使用 一:@V ...

  2. Spring注解之@validated的使用

    spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理.比如,我们判断一个输入参数是否合法,可以用如下方式 一 基础使用 因为spring-b ...

  3. 参数验证 @Validated 和 @Valid 的区别

    来源:blog.csdn.net/qq_27680317/article/details/79970590 整编:Java技术栈(公众号ID:javastack) Spring Validation验 ...

  4. @Validated和@Valid的区别?校验级联属性(内部类)

    每篇一句 NBA里有两大笑话:一是科比没天赋,二是詹姆斯没技术 相关阅读 [小家Java]深入了解数据校验:Java Bean Validation 2.0(JSR303.JSR349.JSR380) ...

  5. @Validated和@Valid区别

    注解地方 @Validated:可以用在类型.方法和方法参数上.但是不能用在成员属性(字段)上 @Valid:可以用在方法.构造函数.方法参数和成员属性(字段)上 两者是否能用于成员属性(字段)上直接 ...

  6. @Valid与@Validated

    Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR- ...

  7. @Validated和@Valid校验参数、级联属性、List

    @Validated和@Valid的区别 在Controller中校验方法参数时,使用@Valid和@Validated并无特殊差异(若不需要分组校验的话): @Valid:标准JSR-303规范的标 ...

  8. @Validated和@Valid区别:Spring validation验证框架对入参实体进行嵌套验证必须在相应属性(字段)加上@Valid而不是@Validated

    Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR- ...

  9. SpringMvc @Validated注解执行原理

    @Validated和@Valid对比 Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),j ...

  10. @Valid和@Validated 区别

    Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR- ...

随机推荐

  1. CSS3之伸缩布局

    一 主轴方向 在伸缩布局中, 默认伸缩项是从左至右的排版的 主轴的排版的方向默认就是row, 默认就是从左至右 1.默认情况下主轴是水平方向的, 但是也可以修改为垂直方向.只要看到flex-direc ...

  2. 创建function函数sys_guid时报错

    创建function函数sys_guid时报错 执行下面的命令 show variables like 'log_bin_trust_function_creators';set global log ...

  3. Vue-router 中hash模式和history模式的关系

    Vue-router 中hash模式和history模式的关系 众所周知,vue+vue-router能够构建一个SPA单页面应用, 打包后只会生成一个index.html文件,而项目内页面的切换其实 ...

  4. docker&docker-compose安装

    一.docker安装 1.通过 uname -r 命令查看当前的内核版本,Docker 要求 CentOS 系统的内核版本高于 3.10 uname -r 2.查看系统是否安装过docker yum ...

  5. STM32使用DMA接收不定长数据

    开启串口,是能串口全局中断 配置DMA并勾选Memory选项 继续配置工程并且生成代码 添加一些串口通讯使用的全局变量 #define BUFFER_SIZE 128 uint8_t Tx_Buf[5 ...

  6. TCP idle timeout 和TCP Keepalive 比较和分析

    TCP  idle timeout  和TCP Keepalive  是两个独立的功能. TCP  idle timeout  TCP  idle timeout  是系统TCP配置文件中的空闲超时设 ...

  7. 实验4_开源控制器实践——OpenDaylight

    基础要求 需要提交两张图, 一是Mininet拓扑生成并连接控制器的结果 二是Mininet中ping测试截图,并体现个人信息 进阶要求 1.获取拓扑的交换机 2.获取流表状态数量 3.获取指定交换机 ...

  8. MySQL视频学习 1-18小节

    地址:https://www.bilibili.com/video/av39807944/?p=16 1-15:撘环境.建表.数据类型(https://www.runoob.com/mysql/mys ...

  9. idea 调试小心得

    1.为什么需要Debug 目的:开发过程中 查找或定位错误或者阅读源码 程序运行的结果(4种情况) 情况1:没有任何bug,程序执行正确! 情况2: 运行以后,出现了错误或异常信息.但是通过 日志文件 ...

  10. Matlab笔记--Matlab基础

    Matlab基础 数据类型(共有15种数据类型) 整数 取整函数 浮点数(单精度浮点数和双精度浮点数--默认为双精度浮点数) 复数 数据的显示格式(format确定数据的显示格式): 数据格式经过改变 ...