2017-02-15 1 views
0

J'apprends le cadre de printemps et je suis confus au sujet de la situation quand utiliser Interceptor et quand utiliser Validator. Hibernate et JSR fournissent beaucoup d'annotation de validation, quel est l'usage de l'intercepteur. Supposons que nous voulons vérifier si le champ est vide ou non, quelle est l'annotation JSR recommandée ou Interceptor.Pourquoi utiliser Interceptor ou des filtres lorsque nous avons Validator

Je veux juste savoir quand devrais-je choisir Intercepteurs sur Validators.

+0

Par intercepteur, voulez-vous dire quelque chose comme 'HandlerInterceptorAdapter' du printemps ou parlez-vous des intercepteurs Hibernate? – Naros

+0

Printemps Intercepteurs –

Répondre

0

Interceptor et Validation sont des concepts distincts, qui peuvent ou non fonctionner ensemble. Ils ne sont pas exclusifs ou conflictuels. Le filtre et les intercepteurs sont des constructions qui conviennent bien aux problèmes transversaux, et un code réutilisable qui n'est pas directement lié à la logique métier. La validation est l'une de ces préoccupations, tout comme la journalisation, l'audit, la sécurité. Les filtres et les intercepteurs sont également centrés sur le cycle de vie des servlets ou des méthodes du gestionnaire Spring Controller, ils concernent la logique qui s'exécute avant ou après.

La validation n'a pas cette facette, généralement, vous allez valider avant le gestionnaire, mais étant donné un certain contexte, vous pouvez en décider autrement.


En ce qui concerne le commentaire Naros. Comme il l'a mentionné. L'objectif principal derrière la spécification de validation est de promouvoir la réutilisation de la logique de validation car c'est le type de problème qui implique et s'exécute généralement dans différents niveaux. Ainsi que cela a été dit, séparer les concepts, en ciblant différents problèmes.

+0

Je dirais qu'il est important non seulement de valider avant le gestionnaire, mais le niveau de service/entreprise ou niveau de persistance devrait le faire aussi. Ceci est particulièrement important lorsque vous partagez votre code de niveau de service ou de persistance entre plusieurs projets dans lesquels d'autres projets ne sont pas basés sur le Web. – Naros