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})