Bean Validation mit Micronaut (Java) hinzufügen

Ich möchte meine eigene Bean-Validierung mit Micronaut verwenden

Ich musste meinen eigenen Validator in meiner Arbeit erstellen, und da es sich um ein neues Framework handelt, hatte ich als Anfänger von && Java, der überhaupt keine Materialien hat, große Probleme.

Infolgedessen habe ich mir notiert, was ich erwartet hatte.

Hintergrund

Die aktuelle Aufgabe erfordert eine solche Implementierung, die für die Eingabevalidierung üblich ist.

  1. Stellen Sie sicher, dass bestimmte Parameter der Anforderung mit dem angegebenen kanonischen Ausdruck übereinstimmen
  2. Wenn nicht, wird eine Fehlerantwort mit einer bestimmten Fehlermeldung zurückgegeben

Grundstufe? Ich denke, dass es mit Micronaut mit "Pattern (regexp =" pattern ", message =" message ")" realisiert werden kann, aber im aktuellen Projekt wird es von einem Handler für jede Annotation verarbeitet, und diese Implementierung war unpraktisch.

Implementierung

** Hinzugefügt am 2020/03/04 Es ist notwendig, @ Singleton zur Validator-Klasse hinzuzufügen, also habe ich es hinzugefügt. ** ** **

Anmerkung + Varidata

Bean-Validierung, die das Feld EmployeeNumber auf eine der folgenden Optionen überprüft:

--Wert ist NULL

package com.myproject.annotation;

import io.micronaut.core.annotation.AnnotationValue;
import io.micronaut.validation.validator.constraints.ConstraintValidator;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.inject.Singleton;
import javax.validation.Constraint;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.util.regex.Pattern;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

@Target({FIELD})
@Retention(RUNTIME)
@Documented

@Constraint(validatedBy = {EmployeeNumberValidator.class})
public @interface EmployeeNumber {
    String message() default "Die Mitarbeiternummer ist der erste Buchstabe des Firmennamens+Bitte geben Sie 4-stellige Zahlen mit halber Breite ein.";
}

@Singleton
class EmployeeNumberValidator
implements ConstraintValidator<EmployeeNumber, String> {
    private static final Pattern EmployeeNumberPattern = Pattern.compile("^[UNK]\\d{4}+$");

    @Override
    public boolean isValid(@Nullable String value, @Nonnull AnnotationValue<EmployeeNumber> annotationMetadata, @Nonnull io.micronaut.validation.validator.constraints.ConstraintValidatorContext context) {
        if (value == null) {
            return true;
        }
        return EmployeeNumberPattern.matcher(value).matches();
    }
}

Dieses Mal werden der Validator und die Annotation zusammengefügt. Wenn Sie jedoch in eine andere Datei ausschneiden möchten, setzen Sie den Validator auf der Annotationsseite auf "public" und "import".

Die an die Anmerkungsdefinitionsschnittstelle selbst angehängten Anmerkungen sind nicht spezifisch für Micronaut und werden unmittelbar nach der Suche angezeigt, sodass ich sie nicht erläutere (ich verstehe sie nicht gut).

Anforderungsentität, die Anmerkungen verwendet

package com.myproject.request;

import com.myproject.annotation.EmployeeNumber;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;

import io.micronaut.core.annotation.Introspected;
import lombok.Data;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;

@Introspected
@Data
@JsonFormat
public class EmployeeSearchRequest {
    @NotNull
    private String officeCode;
    private String employeeId;
    @EmployeeNumber
    private String employeeName;
}

Wo ich gestolpert bin

Als ich anfänglich versuchte, es unter Bezugnahme auf den Artikel zu implementieren, der "javax.validation.ConstraintValidator" implementiert, trat das Phänomen auf, dass der Handler von "ConstraintViolationException" es nicht auffing, obwohl es mit Anmerkungen versehen war.

** Es scheint, dass ich einen Validator erstellen musste, der io.micronaut.validation.validator.constraints.ConstraintValidator implementiert **.

Dies wurde durch Angabe der Anmerkung "@ Constraint" behoben.

Recommended Posts

Bean Validation mit Micronaut (Java) hinzufügen
[Java] Artikel zum Hinzufügen einer Validierung mit Spring Boot 2.3.1.
Java (add2)
Einfache Eingabeprüfung mit Bean Validation!
Java (hinzufügen)
Index mit Java8 Stream.map hinzufügen (Tupple-Version)
Erstellen Sie Ihren eigenen Validator mit Bean Validation
Führen Sie Bean Validation 2.0 in Java SE-Programme ein
Versuchen Sie DI mit Micronaut
Installieren Sie Java mit Homebrew
[Java] Korrelationsprüfung, ohne selbst eine Anmerkung mit Bean Validation zu erstellen
Wechseln Sie die Plätze mit Java
Installieren Sie Java mit Ansible
Bequemer Download mit JAVA
Validierung von JSON mit JSON-Schema
Schalten Sie Java mit direnv
[Java] Initialisierung, Hinzufügung, Erfassung
Java-Download mit Ansible
Selbstgemachte Validierung mit Spring
Lass uns mit Java kratzen! !!
Erstellen Sie Java mit Wercker
Hallo Welt mit Micronaut
Serverlose Funktion mit Micronaut
Java: Datum hinzufügen [Hinweis]
Beginnen Sie mit serverlosem Java mit dem leichtgewichtigen Framework Micronaut!
Endian-Konvertierung mit JAVA
Erstellen Sie eine einfache CRUD mit SpringBoot + JPA + Thymeleaf ~ ~ Validierung hinzufügen ~
(Java) Einfache BDD mit Spektrum?
Verwenden Sie Lambda-Ebenen mit Java
Erstellen Sie mit Gradle ein Java-Multiprojekt
Erste Schritte mit Java Collection
Bean-Mapping mit MapStruct Teil 1
Java-Konfiguration mit Spring MVC
Grundlegende Authentifizierung mit Java 11 HttpClient
Führen Sie Batch mit Docker-Compose mit Java-Batch aus
[Vorlage] MySQL-Verbindung mit Java
Installieren Sie Java 7 mit Homebrew (Fass)
Prozessvalidierungsnachricht mit Decorator
[Java] JSON-Kommunikation mit Jackson
Bean-Mapping mit MapStruct Teil 3
Versuchen Sie eine DB-Verbindung mit Java
Aktivieren Sie Java EE mit NetBeans 9
[Java] JavaConfig mit statischer innerer Klasse
Versuchen Sie gRPC mit Java, Maven
Lassen Sie uns Excel mit Java betreiben! !!
Bean-Mapping mit MapStruct Teil 2
Java-Versionsverwaltung mit SDKMAN
Paging PDF mit Java + PDFBox.jar
Sortieren Sie Zeichenfolgen als charakteristische Funktion mit Java
Objektorientiert mit Strike Gundam (Java)
Greifen Sie mit Micronaut auf Apache Kafka zu
[Java] Inhaltserfassung mit HttpCliient
Java-Versionsverwaltung mit jenv
Fehlerbehebung mit Java Flight Recorder
Java-Zusatz Excel-Datenüberprüfung
Optimieren Sie Java-Tests mit Spock
Stellen Sie mit Java eine Verbindung zur Datenbank her
Stellen Sie mit Java eine Verbindung zu MySQL 8 her
Fehler beim Spielen mit Java
Verwenden von Mapper mit Java (Spring)
Java Study Memo 2 mit Progate