• 代码质量提升之注解一


    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    相关属性:
    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();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    public class User{    
        @validated
        private List<Card> cardList;
    }
    
    • 1
    • 2
    • 3
    • 4

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

  • 相关阅读:
    通过U盘重装Win10教程图解
    Webmin--Webmin Configuration模块
    上班都在刷八股文、Alibaba架构师这份“Java面试突击手册”比刷剧还上瘾
    【JS题解】牛客网JS篇1-10题
    SpringBoot如何集成Log模块呢?
    计算机毕业设计Java大学生家教平台(源码+系统+mysql数据库+lw文档)
    【JavaSE】类和对象(上篇)
    【Linux从青铜到王者】 基础IO
    Docker入门的亿点点学习
    华为机试真题 C++ 实现【字符串序列判定】
  • 原文地址:https://blog.csdn.net/m0_50176078/article/details/128148819