Jakie wzorce projektowe są używane w Spring Framework? [Zamknięte]

90

Jakie wzorce projektowe są używane w Spring Framework?

Tony
źródło
Zawiera ponad 10 wzorów, w tym ... MVC, kontroler przedni, View Helper, Singleton, Prototype, Factory itp. javabench.in/2012/02/design-patterns-being-used-in-spring.html
Raúl

Odpowiedzi:

74

Istnieje wiele różnych wzorców projektowych, ale jest kilka oczywistych:

  • Proxy - używane intensywnie w AOP i zdalnych .

  • Singleton - ziarna zdefiniowane w plikach konfiguracyjnych spring są domyślnie singletonami.

  • Metoda szablonowa - używana szeroko w przypadku powtarzającego się kodu standardowego (np. Czyste zamykanie połączeń itp.). Na przykład JdbcTemplate , JmsTemplate , JpaTemplate .


Zaktualizuj następujące komentarze: W przypadku MVC warto przeczytać dokumentację MVC

Kilka oczywistych wzorców używanych w MVC:

  • Kontroler widoku modelu :-). Zaletą Spring MVC jest to, że kontrolery są POJO, a nie serwletami. Ułatwia to testowanie kontrolerów. Należy zauważyć, że kontroler jest wymagany tylko do zwrócenia logicznej nazwy widoku, a wybór widoku jest pozostawiony osobnemu ViewResolver . Ułatwia to ponowne wykorzystanie kontrolerów do różnych technologii widoku.

  • Kontroler przedni . Spring udostępnia DispatcherServlet, aby zapewnić wysyłanie przychodzących żądań do kontrolerów.

  • View Helper - Spring ma wiele niestandardowych znaczników JSP i makr prędkości, które pomagają w oddzielaniu kodu od prezentacji w widokach.

zestaw narzędzi
źródło
Dzięki, jakie wzorce projektowe są używane w module Spring MVC?
Tony
10
Nie sądzę, żeby Spring wprowadzał singleton do fasoli. Należy zauważyć, że komponent bean o zakresie pojedynczym będzie miał jedno wystąpienie na kontekst aplikacji . Tak więc, jeśli twoja aplikacja ma dwa konteksty Spring, ładują one ten sam singleton bean, Fooa ty pobierasz instancję dla Fookażdego kontekstu, otrzymasz dwa różne odwołania do obiektów. Zamiast tego zastosowany wzorzec projektowy to waga
musza
@Luiggi Mendoza masz na myśli, że wiosna nie ma pojedynczych obiektów? proszę wyjaśnij mi kilka wyjaśnień.
Kumaresan Perumal
1
@KumaresanPerumal istnieje znacząca różnica między wzorcem Singleton a pojedynczą instancją (zwróć uwagę na duże / małe litery S). Wzorzec singleton polega na utrzymywaniu pojedynczego wystąpienia obiektu w całej aplikacji. To, co robi Spring podczas wykrywania pojedynczego komponentu bean, to utworzenie pojedynczej instancji na kontekst aplikacji . Kontekst aplikacji jest podstawowym komponentem Springa i służy do delegowania tworzenia i pobierania obiektów. Pojedynczy komponent bean jest tworzony tylko raz na kontekst aplikacji.
Luiggi Mendoza
Linki do kontrolera widoku modelu, kontrolera frontowego i widoku pomocy prowadzą do strony oracle.com/technetwork/java/index.html . Czy możesz zaktualizować odpowiedź za pomocą działającego linku?
SpringLearner
12

I oczywiście wstrzykiwanie zależności lub IoC (odwrócenie kontroli), które jest kluczowe dla całej rzeczy BeanFactory / ApplicationContext.

Chochos
źródło
10

Rzecz w DI to właściwie jakiś wzorzec strategii. Ilekroć chcesz, aby jakaś logika / implementacja była wymienna, zazwyczaj znajdujesz interfejs i odpowiednią metodę ustawiającą w klasie hosta, aby połączyć niestandardową implementację tego interfejsu.

Oliver Drotbohm
źródło
Odpowiedz od samego Mistrza. @Oliver czy mógłbyś podać więcej wzorów?
Gaurav,
7

Wiosna to zbiór wzorców API sprawdzonych w praktyce, listę zakupów możesz spisać tak długo, jak masz ramię. Sposób, w jaki zaprojektowano interfejs API, zachęca Cię (ale nie zmusza) do podążania za tymi wzorcami, a przez połowę czasu podążasz za nimi bez wiedzy, że to robisz.

skaffman
źródło
3

Wzorzec lokalizatora usług - ServiceLocatorFactoryBean przechowuje informacje o wszystkich komponentach bean w kontekście. Gdy kod klienta prosi o usługę (komponent bean) przy użyciu nazwy, po prostu lokalizuje ten komponent w kontekście i zwraca go. Kod klienta nie musi pisać kodu związanego ze sprężyną, aby zlokalizować ziarno.

Suman Mitra
źródło
2

Observer-Observable: jest używany w mechanizmie zdarzeń ApplicationContext

ksevindik
źródło
1

Wzorzec Factory jest również używany do ładowania fasoli za pośrednictwem BeanFactory i kontekstu aplikacji.

Gurpreet
źródło
1

Wzorzec metody fabryki: BeanFactory do tworzenia instancji obiektu Singleton: typ instancji może być singletonem dla kontekstu Prototype: typ instancji może być prototypem. Wzorzec konstruktora: możesz także zdefiniować metodę w klasie, która będzie odpowiedzialna za tworzenie złożonej instancji.

Praveen Sharma
źródło
0

Pojemnik sprężynowy generuje obiekty fasoli w zależności od zakresu fasoli (singleton, prototyp itp.). To wygląda na implementację wzorca Abstract Factory . Jestem pewien, że w wewnętrznej implementacji Springa każdy zakres powinien być powiązany z określoną klasą rodzaju fabryki.

jsr
źródło