Quels modèles de conception sont utilisés dans le cadre Spring?
Différents modèles de conception sont utilisés, mais quelques-uns sont évidents:
Singleton - Les haricots définis dans les fichiers de configuration Spring sont des singletons par défaut.
Méthode de modèle - largement utilisée pour traiter le code répétitif du type passe-partout (comme fermer les connexions proprement, etc.). Par exemple JdbcTemplate , JmsTemplate , JpaTemplate .
Mettez à jour les commentaires suivants: Pour MVC, vous pouvez lire les référence MVC
Quelques modèles évidents utilisés dans MVC:
Contrôleur de vue modèle :-). L’avantage de Spring MVC est que vos contrôleurs sont des POJO et non des servlets. Cela facilite les tests des contrôleurs. Une chose à noter est que le contrôleur est seulement tenu de renvoyer un nom de vue logique, et la sélection de vue est laissée à un ViewResolver distinct. Cela facilite la réutilisation des contrôleurs pour différentes technologies d'affichage.
contrôleur frontal . Spring fournit DispatcherServlet pour s’assurer qu’une demande entrante est envoyée à vos contrôleurs.
View Helper - Spring utilise un certain nombre de balises JSP personnalisées et de macros de vélocité pour vous aider à séparer le code de la présentation dans les vues.
Et bien sûr, l’injection de dépendance, ou IoC (inversion de contrôle), qui est au cœur de l’ensemble du travail BeanFactory/ApplicationContext.
Le DI est en fait une sorte de modèle de stratégie. Chaque fois que vous voulez que la logique/implémentation soit échangeable, vous trouvez généralement une interface et une méthode de définition appropriée sur la classe Host pour câbler votre implémentation personnalisée de cette interface.
Spring est un ensemble de modèles d’API conformes aux meilleures pratiques. Vous pouvez en créer une liste de magasinage aussi longue que votre bras. La façon dont l'API est conçue vous encourage (sans vous obliger) à suivre ces schémas et la moitié du temps que vous les suivez sans savoir que vous le faites.
Modèle de localisateur de services - ServiceLocatorFactoryBean conserve les informations de tous les beans du contexte. Lorsque le code client demande un service (bean) en utilisant name, il localise simplement ce bean dans le contexte et le renvoie. Le code client n'a pas besoin d'écrire de code associé à un ressort pour localiser un bean.
Observer-Observable: il est utilisé dans le mécanisme d'événement d'ApplicationContext
Méthode Factory patter: BeanFactory pour créer une instance d'objet Singleton: le type d'instance peut être singleton pour un contexte Prototype: le type d'instance peut être prototype. Modèle de générateur: vous pouvez également définir une méthode dans une classe qui sera chargée de créer une instance complexe.
Le modèle d'usine est également utilisé pour charger des beans via BeanFactory et le contexte d'application.
Le conteneur Spring génère des objets de haricots en fonction de la portée du bean (singleton, prototype, etc.). Cela ressemble donc à la mise en œuvre de motif Abstract Factory . Lors de la mise en œuvre interne du printemps, je suis convaincu que chaque domaine d'application devrait être lié à une classe de type d'usine spécifique.