当前位置: 首页 > article >正文

Spring Boot @AllArgsConstructor 还是 @RequiredArgsConstructor

在Spring Boot项目中,选择使用 @AllArgsConstructor 还是 @RequiredArgsConstructor 这两个注解都是 Lombok 库提供的,用于简化构造函数的创建。

区别:

1. @AllArgsConstructor 会在类上生成一个包含所有非静态、非 final 字段的构造函数。这意味着,如果你的类中有多个字段,并且希望在构造函数中初始化所有这些字段,那么可以使用 @AllArgsConstructor。

示例:

@RestController
@AllArgsConstructor
@Api(tags = "APP/接口版本更新",description = "")
public class SysVersionCtrl extends BaseFragment {


    ISystemVersionService service;
    

}

2. @RequiredArgsConstructor 会在类上生成一个包含所有被标记为 final 或声明为 private 的字段的构造函数。这意味着只有那些不可变或私有的字段才会被包含在构造函数中。这通常用于依赖注入场景,特别是当某些字段是必须的,并且希望在构造时就提供这些依赖时。

示例:

@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/user")
@Api(tags="用户服务",description = "")
public class SysUserPullCtrl  extends ApiFrag {

    
    final ISysUserPullService userPullService;
    final ISysUserService userservice;
    

}

 

其它:

@AllArgsConstructor 和 @RequiredArgsConstructor 不适合用来注入由 @Value 注解绑定的值,因为这些值通常是在运行时动态解析的,并且不是作为构造函数的参数注入。如果你需要在构造函数中初始化这些值,可以考虑使用 @Configuration 类结合 @Bean 方法的方式,或者直接在类中使用 @Value 注解来实现。

示例:

@Data
@Component
@ConfigurationProperties(prefix = "custom")
public class CustomProperties {

    private Boolean loginfo=true;
    private Boolean sms=false;
    private String  code;


}


@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/user")
@Api(tags="用户服务",description = "")
public class SysUserPullCtrl  extends ApiFrag {

    
    final ISysUserPullService userPullService;
    final ISysUserService userservice;
    final CustomProperties custProperties;

}

 

总结:

在大多数情况下,@RequiredArgsConstructor 是更好的选择,因为它仅生成必要的构造函数,减少了不必要的代码,并且保持了依赖关系的清晰性。这也有助于遵循最小必要原则,使得代码更加简洁和易于维护。

 


http://www.kler.cn/a/296794.html

相关文章:

  • 汇编语言知识基础介绍
  • 【网络原理】❤️Tcp 核心机制❤️ 通晓可靠传输的秘密, 保姆式教学, 建议收藏 !!!
  • 算法day09 二叉树
  • 损坏SD数据恢复的8种有效方法
  • 828华为云征文|采用Flexus云服务器X实例部署RTSP直播服务器
  • Playwright 测试:如何在云端使用 Browserless 运行?
  • 数据结构的简单认识
  • 速盾:直播 cdn 服务器带宽?
  • k8s--关于pod方面问题的排错思路与方法
  • 七、Maven继承和聚合关系、及Maven的仓库及查找顺序
  • uniapp 给画作生成画框
  • 又考了两个Oracle认证:RAC和DataGuard,文末送资料
  • VMware虚拟机上安装openfileresa开源的NAS存储管理解决方案和ISCSI共享磁盘存储
  • Springboot整合【Kafka】
  • 【4.1】图搜索算法-BFS和DFS解奇偶树
  • [数据集][目标检测]井盖丢失未盖破损检测数据集VOC+YOLO格式2890张5类别
  • 软件开发人员从0到1实现物联网项目:项目架构的思考
  • JAVA智听未来一站式有声阅读平台听书系统小程序源码
  • 【代码】Redisson 分布式锁
  • golang fmt.Printf中 %q