Welche Entwurfsmuster werden im Spring Framework verwendet? [geschlossen]

90

Welche Entwurfsmuster werden im Spring Framework verwendet?

Tony
quelle
Es enthält mehr als 10 Muster, einschließlich ..MVC, Front-Controller, View Helper, Singleton, Prototyp, Factory usw. javabench.in/2012/02/design-patterns-being-used-in-spring.html
Raúl

Antworten:

74

Es werden viele verschiedene Entwurfsmuster verwendet, aber es gibt einige offensichtliche:

  • Proxy - wird häufig in AOP und Remoting verwendet .

  • In Spring-Konfigurationsdateien definierte Singleton-Beans sind standardmäßig Singletons.

  • Vorlagenmethode - wird häufig verwendet, um mit wiederholtem Code auf der Kesselplatte umzugehen (z. B. sauberes Schließen von Verbindungen usw.). Zum Beispiel JdbcTemplate , JmsTemplate , JpaTemplate .


Aktualisieren Sie die folgenden Kommentare: Für MVC möchten Sie möglicherweise die MVC-Referenz lesen

Einige offensichtliche Muster, die in MVC verwendet werden:

  • Model View Controller :-). Der Vorteil von Spring MVC besteht darin, dass Ihre Controller POJOs und keine Servlets sind. Dies erleichtert das Testen von Steuerungen. Zu beachten ist, dass der Controller nur einen logischen Ansichtsnamen zurückgeben muss und die Ansichtsauswahl einem separaten ViewResolver überlassen bleibt . Dies erleichtert die Wiederverwendung von Controllern für verschiedene Ansichtstechnologien.

  • Front Controller . Spring bietet DispatcherServlet, um sicherzustellen, dass eine eingehende Anforderung an Ihre Controller gesendet wird.

  • View Helper - Spring verfügt über eine Reihe von benutzerdefinierten JSP-Tags und Geschwindigkeitsmakros, mit denen Sie Code von der Darstellung in Ansichten trennen können.

Toolkit
quelle
Vielen Dank, welche Entwurfsmuster werden im Spring MVC-Modul verwendet?
Tony
10
Ich glaube nicht, dass Spring Singleton für die Bohnen implementiert. Beachten Sie, dass eine Bean mit Singleton-Gültigkeitsbereich eine einzige Instanz pro Anwendungskontext hat . Wenn Ihre Anwendung also zwei Spring-Kontexte hat, laden sie dieselbe Singleton-Bean Foound Sie rufen die Instanz von Foopro Kontext ab. Sie erhalten zwei verschiedene Objektreferenzen. Stattdessen ist das hier angewandte Designmuster Fliegengewicht
Luiggi Mendoza
@Luiggi Mendoza meinst du, dass der Frühling keine Singleton-Objekte hat? Bitte erläutern Sie mich mit einigen Erläuterungen.
Kumaresan Perumal
1
@KumaresanPerumal Es gibt einen signifikanten Unterschied zwischen dem Singleton-Muster und der Singleton-Instanz (beachten Sie das Groß- / Kleinbuchstaben S). Bei einem Singleton-Muster geht es darum, eine einzelne Instanz des Objekts über die gesamte Anwendung hinweg zu verwalten. Wenn Spring eine Singleton-Bean erkennt, erstellt Spring eine einzelne Instanz pro Anwendungskontext . Der Anwendungskontext ist die Kernkomponente von Spring und dient zum Delegieren der Erstellung und des Abrufs von Objekten. Die Singleton-Bean wird nur einmal pro Anwendungskontext erstellt.
Luiggi Mendoza
Links zu Model View Controller, Front Controller und View Help finden Sie unter oracle.com/technetwork/java/index.html . Könnten Sie bitte die Antwort mit einem funktionierenden Link aktualisieren?
SpringLearner
12

Und natürlich die Abhängigkeitsinjektion oder IoC (Inversion of Control), die für das gesamte BeanFactory / ApplicationContext-Material von zentraler Bedeutung ist.

Chochos
quelle
10

Die DI-Sache ist eigentlich eine Art Strategiemuster. Wann immer Sie eine Logik / Implementierung austauschbar sein möchten, finden Sie normalerweise eine Schnittstelle und eine geeignete Setter-Methode für die Host-Klasse, um Ihre benutzerdefinierte Implementierung dieser Schnittstelle zu verkabeln.

Oliver Drotbohm
quelle
Antworte vom Meister selbst. @Oliver könntest du hier mehr Muster angeben?
Gaurav
6

Spring ist eine Sammlung von Best-Practice-API-Mustern, von denen Sie eine Einkaufsliste erstellen können, solange Ihr Arm reicht. Die Art und Weise, wie die API entworfen wurde, ermutigt Sie (aber zwingt Sie nicht), diesen Mustern zu folgen, und die Hälfte der Zeit, in der Sie ihnen folgen, ohne zu wissen, dass Sie dies tun.

Skaffman
quelle
3

Service Locator Pattern - ServiceLocatorFactoryBean speichert Informationen zu allen Beans im Kontext. Wenn der Clientcode nach einem Dienst (Bean) mit Namen fragt, findet er diese Bean einfach im Kontext und gibt sie zurück. Der Client-Code muss keinen federbezogenen Code schreiben, um eine Bean zu finden.

Suman Mitra
quelle
2

Observer-Observable: Wird im Ereignismechanismus von ApplicationContext verwendet

ksevindik
quelle
1

Das Factory-Muster wird auch zum Laden von Beans über den BeanFactory- und Anwendungskontext verwendet.

Gurpreet
quelle
1

Factory Method patter: BeanFactory zum Erstellen einer Instanz eines Objekts Singleton: Instanztyp kann Singleton für einen Kontext sein Prototyp: Instanztyp kann Prototyp sein. Builder-Muster: Sie können auch eine Methode in einer Klasse definieren, die für die Erstellung komplexer Instanzen verantwortlich ist.

Praveen Sharma
quelle
0

Der Spring-Container generiert je nach Bean-Bereich (Singleton, Prototyp usw.) Bean-Objekte. Das sieht also so aus, als würde man das Abstract Factory-Muster implementieren . Ich bin sicher, dass bei der internen Implementierung des Frühlings jeder Bereich an eine bestimmte Fabrikklassenklasse gebunden sein sollte.

jsr
quelle