[JAVA] Erstellen Sie Ihren eigenen Validator mit Bean Validation

Überblick

Ein Memo der Prozedur vom Schreiben eines selbst erstellten Validators mit Bean Validation bis zum Schreiben eines Komponententests.

Versuchen

Ich werde versuchen, einen Validator zu erstellen, um zu beurteilen, ob es sich um einen Songnamen von Michael Jackson handelt.

Implementierung einer variablen Datenklasse

package com.example.customvalidate;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.ArrayList;
import java.util.List;

public class MJValidator implements ConstraintValidator<MJ, String> {

    private final static List<String> songs = new ArrayList<String>() {
        {
            add("Remember The Time"); add("Stranger In Moscow"); add("You Are Not Alone");
        }
    };

    public void initialize(MJ constraintAnnotation) {
    }

    public boolean isValid(String value, ConstraintValidatorContext context) {
        return songs.stream().anyMatch(song -> song.equals(value));
    }
}

Kommentar

Implementierung von Anmerkungen

Machen Sie eine Anmerkung. Jetzt können Sie es wie "@ MJ" verwenden

package com.example.customvalidate;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

@Documented
@Constraint(validatedBy = {MJValidator.class})
@Target({ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MJ {

    String message() default "you must specify one of Michael Jackson's songs.";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    @Target({ElementType.FIELD})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @interface List {
        MJ[] value();
    }
}

Kommentar

Schreiben Sie einen Test

package com.example.customvalidate;

import org.junit.Before;
import org.junit.Test;
import javax.validation.*;
import java.util.Set;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;

public class MJValidatorTest {

    private Validator validator;

    @Before
    public void setUp() {
        validator = Validation.buildDefaultValidatorFactory().getValidator();
    }

    @Test
public void Ein Fehler tritt auf, wenn Sie einen falschen Songtitel übergeben.() {
        TestBean bean = new TestBean("Remember a Time");
        Set<ConstraintViolation<Object>> violations = validator.validate(bean);
        assertThat(violations.isEmpty(), is(false));
        String expectedMessage = "you must specify one of Michael Jackson's songs.";
        violations.forEach(v -> assertThat(v.getMessage().equals(expectedMessage), is(true)));
    }

    @Test
public void Verursacht keinen Fehler beim Übergeben des richtigen Songtitels() {
        TestBean bean = new TestBean("Remember The Time");
        Set<ConstraintViolation<Object>> violations = validator.validate(bean);
        assertThat(violations.isEmpty(), is(true));
    }

    private static class TestBean {
        @MJ
        private String song;

        TestBean(String song) {
            this.song = song;
        }
    }
}

Ausführen und in Ordnung, wenn der Test erfolgreich ist.

Kommentar

Recommended Posts

Erstellen Sie Ihren eigenen Validator mit Bean Validation
Erstellen Sie Ihr eigenes Dienstprogramm mit Thymeleaf mit Spring Boot
Erstellen Sie Ihre eigenen Java-Anmerkungen
Erstellen Sie mit JMeter Ihren eigenen Sampler
Erstellen Sie Ihre eigene Solr-Funktionsabfrage
Bean Validation mit Micronaut (Java) hinzufügen
Einfache Eingabeprüfung mit Bean Validation!
Erstellen Sie Ihre eigene Codierung für String.getBytes ()
So erstellen Sie mit Spring Boot einen eigenen Controller, der / error entspricht
Verwendung der Talend-Komponente (5) Erstellen Sie Ihre eigene Komponente
Erstellen Sie Ihre eigene Android-App für das Java-Lernen
Fügen Sie mit Spring Security Ihre eigenen Authentifizierungselemente hinzu
[Java] Sortieren Sie ArrayList nach Elementen Ihrer eigenen Klasse
Rufen Sie Ihre eigene Klasse auf, die unter lib mit Rails erstellt wurde
Rufen Sie Ihre eigene Methode mit PreAuthorize in Spring Security auf
Versuchen Sie es mit Trailblazer
Validierung von JSON mit JSON-Schema
Machen Sie Ihren eigenen Pomodoro
Selbstgemachte Validierung mit Spring
Erstellen Sie eine einfache CRUD mit SpringBoot + JPA + Thymeleaf ~ ~ Validierung hinzufügen ~
Registrieren Sie Ihr eigenes Docker-Image in ECR mithilfe der AWS CLI
Java: Starten Sie WAS mit Docker und stellen Sie Ihre eigene Anwendung bereit
Verwenden Sie mit Rails6 Ihre eigene Klasse im lib-Verzeichnis