Validierungsmuster und -hinweise für Geschäftslogik

Ich habe zwei Validierungsebenen in meiner Anwendung. Zunächst wird die Entitätsvalidierung durch die Bean-Validierungs-API durchgeführt (z. B. erforderliche Felder). Die zweite Ebene ist die Validierung der Geschäftslogik. Beispielsweise hat der Benutzer einen Beitrag. Der Benutzer kann einen Beitrag nur löschen, wenn er ein Ersteller dieses Beitrags und eine Beitragsbewertung <50 ist. Also muss ich so etwas tun:

if (post.getCreator().equals(session.getUser())) {
  if (post.getRating() < 50) {
    postRepository.delete(post);
  } else errors.add(400, "Cant delete post with rating 50 or higher")
} else errors add (400, "You should be owner of the post")

Ich mag diesen Weg nicht, da diese Bedingungen wiederverwendet werden und ich Code duplizieren muss. Wenn die Anzahl der Bedingungen größer als 5 ist, wird es unwirklich, den Code zu lesen und zu verstehen.

Darüber hinaus ist der Standard-Spring-Validator nicht sehr hilfreich, da ich für eine Entität unterschiedliche Validierungen für verschiedene Aktionen durchführen muss (z. B. Löschen und Aktualisieren).

So bin ich auf der Suche nach einer Möglichkeit, dies auf intelligentere Weise zu tun (Muster vielleicht) und ich wäre sehr dankbar, wenn mir jemand einen Hinweis geben könnte.

Danke im Voraus

Antworten auf die Frage(4)

Ihre Antwort auf die Frage