Padrões e conselhos de validação de lógica de negócios

Eu tenho duas camadas de validação no meu aplicativo. Primeiro, a validação da entidade é realizada pela API de validação de bean (por exemplo, campos obrigatórios). O segundo nível é a validação da lógica de negócios. Por exemplo, o usuário tem uma postagem. O usuário pode excluir uma postagem apenas se ele for o criador e a classificação da publicação <50. Portanto, tenho que fazer algo assim:

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")

Não gosto dessa maneira, pois essas condicionais são reutilizadas e tenho que duplicar o código. Além disso, se o número de condicionais for maior que 5, torna-se irreal ler e entender o código.

Além disso, o Spring Validator padrão não será muito útil, pois tenho que criar uma validação diferente para uma entidade em ações diferentes (excluir e atualizar, por exemplo)

Então, estou procurando uma maneira de fazer isso de uma maneira mais inteligente (talvez padrão) e ficaria muito grato se alguém pudesse me dar uma dica.

Agradeço antecipadamente!

questionAnswers(2)

yourAnswerToTheQuestion