使用策略模式 单例模式 实现多条件校验java bean字段


@Component
@Slf4j
public class ManualValidateComponent implements InitializingBean {


private static SpringValidatorAdapter validator;

@Autowired
private SpringValidatorAdapter validatorAdapter;

/**
* 预寻仓校验
*
* @param object 校验对象
* @param groups 校验组
*/
public static void groupsValidate(Object object, Class<?>... groups) {
Set<ConstraintViolation<Object>> validate = validator.validate(object, groups);
if (!CollectionUtils.isEmpty(validate)) {
ConstraintViolation<Object> objectConstraintViolation = validate.stream().findFirst().get();
String message = objectConstraintViolation.getMessage();
String errorInfoByNo = ErrorCodeEnums.getErrorInfoByNo(message);
log.error("校验失败:{} {}", message, errorInfoByNo);
ErrorCodeEnums errorCodeEnum = ErrorCodeEnums.getErrorCodeEnum(message);
I18nAssert.isTrue(false, errorCodeEnum);
}
}


@Override
public void afterPropertiesSet() throws Exception {
validator = validatorAdapter;
}
}



@NotBlank(message = "error.order.trans.8029", groups = {
OrderTransactionAppValidationGroup.SapSdSendOut.class,
OrderTransactionAppValidationGroup.ExchangeOrder.class,
OrderTransactionAppValidationGroup.ReturnOrder.class,
OrderTransactionAppValidationGroup.RefundOrder.class,
OrderTransactionAppValidationGroup.DebitCreditOrderCreate.class
})
private String orderType;



// 订单基本校验,所有订单类型都校验部分
ManualValidateComponent.groupsValidate(orderHeadDTO, OrderTransactionAppValidationGroup.Base.class);
posted @ 2025-06-14 14:34  予真  阅读(23)  评论(0)    收藏  举报