Какие шаблоны проектирования используются в Spring framework? [закрыто]


90

Какие шаблоны проектирования используются в Spring framework?


Он включает более 10 шаблонов, включая ..MVC, Front Controller, View Helper, Singleton, Prototype, Factory и т. Д. javabench.in/2012/02/design-patterns-being-used-in-spring.html
Рауль

Ответы:


74

Используется множество различных шаблонов проектирования, но есть несколько очевидных:

  • Прокси - широко используется в АОП и удаленном взаимодействии .

  • Синглтон - beans, определенные в файлах конфигурации Spring, по умолчанию являются одиночными.

  • Шаблонный метод - широко используется для работы с повторяющимся стандартным кодом (например, закрытие соединений и т. Д.). Например, JdbcTemplate , JmsTemplate , JpaTemplate .


Обновите следующие комментарии: Для MVC вы можете прочитать Справочник по MVC

Некоторые очевидные шаблоны, используемые в MVC:

  • Контроллер представления модели :-). Преимущество Spring MVC в том, что ваши контроллеры являются объектами POJO, а не сервлетами. Это упрощает тестирование контроллеров. Следует отметить, что от контроллера требуется только возвращать имя логического представления, а выбор представления остается за отдельным ViewResolver . Это упрощает повторное использование контроллеров для различных технологий просмотра.

  • Передний контроллер . Spring предоставляет DispatcherServlet, чтобы гарантировать, что входящий запрос будет отправлен вашим контроллерам.

  • View Helper - Spring имеет ряд настраиваемых тегов JSP и макросов скорости, помогающих отделить код от представления в представлениях.


Спасибо! Какие шаблоны проектирования используются в модуле Spring MVC?
Тони

10
Я не думаю, что Spring реализует singleton для beans. Обратите внимание, что компонент с одноэлементной областью видимости будет иметь единственный экземпляр для каждого контекста приложения . Итак, если ваше приложение имеет два контекста Spring, они загружают один и тот же одноэлементный компонент, Fooи вы получаете экземпляр для Fooкаждого контекста, вы получите две разные ссылки на объекты. Вместо этого здесь применен шаблон проектирования наилегчайшего веса
Луигги Мендоса

@Luiggi Mendoza, вы имеете в виду, что у весны нет одноэлементных объектов? пожалуйста, объясните мне некоторые пояснения.
Кумаресан Перумал

1
@KumaresanPerumal есть существенная разница между шаблоном Singleton и экземпляром singleton (обратите внимание на верхний / нижний регистр S). Шаблон Singleton - это поддержание одного экземпляра объекта во всем приложении. Что Spring делает при обнаружении одноэлементного компонента, так это создание одного экземпляра для каждого контекста приложения . Контекст приложения является основным компонентом Spring и служит для делегирования создания и извлечения объектов. Одноэлементный компонент создается только один раз для каждого контекста приложения.
Луигги Мендоса

Ссылки для контроллера представления модели, фронт-контроллера и представления помогли перейти на oracle.com/technetwork/java/index.html . Не могли бы вы обновить ответ с помощью рабочей ссылки?
SpringLearner

12

И, конечно же, внедрение зависимостей или IoC (инверсия управления), что является центральным для всего материала BeanFactory / ApplicationContext.


10

На самом деле DI - это своего рода шаблон стратегии. Всякий раз, когда вы хотите иметь возможность обмена какой-либо логикой / реализацией, вы обычно находите интерфейс и соответствующий метод установки в классе хоста, чтобы связать вашу индивидуальную реализацию этого интерфейса.


Ответ от самого Мастера. @Oliver, не могли бы вы указать здесь больше шаблонов?
Gaurav

7

Spring - это набор передовых шаблонов API, вы можете составить список покупок из них, сколько у вас под рукой. Способ, которым разработан API, побуждает вас (но не заставляет) следовать этим шаблонам, и в половине случаев вы следуете им, не зная, что вы это делаете.


3

Шаблон локатора службы - ServiceLocatorFactoryBean хранит информацию обо всех компонентах в контексте. Когда клиентский код запрашивает службу (компонент) по имени, он просто находит этот компонент в контексте и возвращает его. Клиентскому коду не нужно писать код, связанный с Spring, чтобы найти компонент.



1

Заводской шаблон также используется для загрузки bean-компонентов через BeanFactory и контекст приложения.


1

Шаблон фабричного метода: BeanFactory для создания экземпляра объекта. Синглтон: тип экземпляра может быть одноэлементным для контекста. Прототип: тип экземпляра может быть прототипом. Шаблон построителя: вы также можете определить метод в классе, который будет отвечать за создание сложного экземпляра.


0

Контейнер Spring генерирует объекты bean-компонентов в зависимости от области видимости bean-компонентов (singleton, prototype и т. Д.). Это похоже на реализацию паттерна Абстрактная фабрика . Я уверен, что во внутренней реализации Spring каждая область должна быть привязана к определенному классу фабрики.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.