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

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


person Tony    schedule 16.04.2009    source источник
comment
Он включает в себя более 10 шаблонов, включая ..MVC, Front controller, View Helper, Singleton, Prototype, Factory и т. д. javabench.in/2012/02/design- образцы-используемые-в-spring.html   -  person Raúl    schedule 28.05.2014


Ответы (9)


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

  • Прокси — активно используется в AOP и удаленное взаимодействие.

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

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


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

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

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

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

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

person toolkit    schedule 16.04.2009
comment
Спасибо. Какие шаблоны проектирования используются в модуле Spring MVC? - person Tony; 16.04.2009
comment
Я не думаю, что Spring реализует синглтон для bean-компонентов. Обратите внимание, что bean-компонент с областью действия singleton будет иметь один экземпляр для каждого контекста приложения. Таким образом, если ваше приложение имеет два контекста Spring, они загружают один и тот же одноэлементный компонент Foo, и вы получаете экземпляр Foo для каждого контекста, вы получите две разные ссылки на объекты. Вместо этого здесь применен шаблон проектирования облегченный. - person Luiggi Mendoza; 05.05.2014
comment
@Luiggi Mendoza, вы имеете в виду, что у весны нет одноэлементных объектов? пожалуйста, объясните мне с некоторыми разъяснениями. - person Kumaresan Perumal; 21.04.2017
comment
@KumaresanPerumal существует значительная разница между шаблоном Singleton и экземпляром Singleton (обратите внимание на букву S в верхнем/нижнем регистре). Шаблон Singleton — это поддержка одного экземпляра объекта во всем приложении. Что делает Spring при обнаружении одноэлементного компонента, так это создает один экземпляр для каждого контекста приложения. Контекст приложения является основным компонентом Spring и служит для делегирования создания и извлечения объектов. Одноэлементный компонент создается только один раз для каждого контекста приложения. - person Luiggi Mendoza; 21.04.2017
comment
Ссылки на контроллер представления модели, фронт-контроллер и представление помогают перейти на oracle.com/technetwork/java /index.html. Не могли бы вы обновить ответ рабочей ссылкой? - person SpringLearner; 02.11.2017
comment
Приведение JdbcTemplate и его друзей в качестве примера шаблонного метода очень распространено, но я думаю, что они имеют мало общего с этим шаблоном (кроме названия). Или же мы можем назвать почти все случаи, когда вы расширяете класс, чтобы переопределить некоторые защищенные методы, примером шаблона метода шаблона. - person ddekany; 26.11.2017
comment
@toolkit Я сталкивался с тем, что Spring Framework кодифицирует формализованные шаблоны проектирования как первоклассные объекты, которые вы можете интегрировать в свое собственное приложение, это утверждение при чтении spring из документации, что это значит. - person legend; 28.09.2018

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

person Chochos    schedule 16.04.2009

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

person Oliver Drotbohm    schedule 30.04.2009
comment
Ответ от самого Мастера. @ Оливер, не могли бы вы указать здесь больше шаблонов? - person Gaurav; 25.07.2018

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

person skaffman    schedule 17.04.2009

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

person Suman Mitra    schedule 14.02.2013

Observer-Observable: используется в механизме событий ApplicationContext.

person ksevindik    schedule 01.05.2011

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

person Gurpreet    schedule 30.11.2009

Шаблон метода Factory: BeanFactory для создания экземпляра объекта Singleton: тип экземпляра может быть singleton для контекста Prototype: тип экземпляра может быть прототипом. Шаблон Builder: вы также можете определить метод в классе, который будет отвечать за создание сложного экземпляра.

person Praveen Sharma    schedule 14.06.2010

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

person jsr    schedule 21.01.2013