@UtilityClass
public class BeanValidateUtil {

    public static final Validator validator = Validation.byProvider(HibernateValidator.class)
            .configure()
            .buildValidatorFactory().getValidator();

    public static String validate(Object obj) {
        return validator.validate(obj).stream().map(ConstraintViolation::getMessage).reduce((a, b) -> a + ";" + b).orElse("");
    }

    public static <T> boolean validateCollection(Collection<T> collection, BiConsumer<T, String> consumer) {
        boolean b = true;
        for (T t : collection) {
            String msg = validate(t);
            if (StringUtils.isNotBlank(msg)) {
                consumer.accept(t, msg);
                b = false;
            }
        }
        return b;
    }

}