Si vous avez déjà utilisé Struts2 correctement, vous sauriez que:
- il est vraiment juste Web Fonctionne (le résultat final d'un louable effort pour "fixer" la h-ou-r-i-b-le Struts1 API).
- il a DI, les Intercepteurs.
- c'est l'API est en fait plus efficace que celle de Spring MVC.
Par exemple, le Ressort ThrowawayController
(notamment dans un tout autre objet de la hiérarchie de Printemps les autres Contrôleurs) est presque aussi simple que d'une Struts2 norme de l'Action. Les deux ont un sans paramètre execute()
méthode - Struts2 retourne un "transparent" String
, tandis que le Printemps du Contrôleur retourne une ModelAndView
(qui n'est certainement pas "transparent").
En passant, quelqu'un peut-il expliquer (personne ne s'en soucie) que les paramètres pour un ModelAndView()
sont bass ackwards, ordonnant à la vue de l'objet précéder le modèle?
Dans Struts2, vous obtenez un puissant (basée sur des normes ouvertes) langue appelée OGNL, quelque chose qui s'appelle un ValueStack, et les Intercepteurs. Ces sont remarquables parce qu'ils ont, dans l'ensemble, d'en permettre la "convention over configuration", et de faire Struts2 supérieure à Spring MVC.
Autre chose à propos de Printemps rankles: le "découplage" qui se passe dans des objets Java lors de l'utilisation de Ressort d'ailleurs le cas - problème, c'est que les objets sont toujours interdépendants, au lieu de cela maintenant le interdenendency est exprimé en XML (et une recompilation est nécessaire si les mappages XML changer)! Vous pouvez également utiliser instrumentation du bytecode (via le conteneur) pour accomplir la "magie". Et vraiment, si dépendante de la classe A
a un setter pour la classe B
, peut-il vraiment être dit qu'il ne connaît pas (une dépendance) de la classe B
? Être honnête.