• 代码质量提升之注解一


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

  • 相关阅读:
    android apk 加固后重新签名
    pytorch的axis的理解
    Apache DolphinScheduler - 快速扩展 TaskPlugin 从入门到放弃
    macbook 从0开始下载git/nvm
    海格里斯HEGERLS仓储货架厂家标准解析|智能自动化立体仓库AS/RS存储系统
    安装maven及查看maven版本号
    如何解决Maven依赖冲突?
    MySQL之MHA高可用集群
    Redis数据结构
    项目系列之登录管理
  • 原文地址:https://blog.csdn.net/m0_50176078/article/details/128148819