【问题标题】:validate on constructor in spring在春季验证构造函数
【发布时间】:2018-07-19 21:54:24
【问题描述】:

这个问题真的很短。这两者有什么区别吗?如果没有,你用哪一个?

第一个:

private final UserRepository UserRepository;
private final UserService userService;

@Autowired
public UserServiceImpl(UserRepository userRepository, UserService userService) {
    Validate.notNull(this.userRepository = userRepository, "user cannot be null");
    Validate.notNull(this.userService = userService, "userService cannot be null");
}

第二个:

@Autowired
public WorkingTimeServiceImpl(UserRepository userRepository, UserService userService) {
    Validate.notNull(userRepository, "userRepository cannot be null");
    Validate.notNull(userService, "userService cannot be null");
    this.userRepository = userRepository;
    this.userService = userService;
}

【问题讨论】:

    标签: spring validation notnull


    【解决方案1】:

    事实上,这里的 null 验证是无用的,因为它从未使用过,通过将 autowired 放置在构造函数中,spring 会按照文档中的说明为您检查它们

    Spring 团队通常提倡构造函数注入,因为它可以将应用程序组件实现为不可变对象,并确保所需的依赖项不为空。

    现在我们假设您对方法执行相同的模式,在这种方法中我使用第二种方法,因为它使我能够将我的验证代码与我的属性 bean 分开,所以当逻辑变得更复杂时,我可以简单地将验证逻辑放在另一个类中,通常我会在 null 验证后添加更多验证规则

    一般规则任何验证过程都不需要了解您的属性

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 2017-01-27
      相关资源
      最近更新 更多