Синглтон - beans, определенные в файлах конфигурации Spring, по умолчанию являются одиночными.
Шаблонный метод - широко используется для работы с повторяющимся стандартным кодом (например, закрытие соединений и т. Д.). Например, JdbcTemplate , JmsTemplate , JpaTemplate .
Обновите следующие комментарии: Для MVC вы можете прочитать Справочник по MVC
Некоторые очевидные шаблоны, используемые в MVC:
Контроллер представления модели :-). Преимущество Spring MVC в том, что ваши контроллеры являются объектами POJO, а не сервлетами. Это упрощает тестирование контроллеров. Следует отметить, что от контроллера требуется только возвращать имя логического представления, а выбор представления остается за отдельным ViewResolver . Это упрощает повторное использование контроллеров для различных технологий просмотра.
Спасибо! Какие шаблоны проектирования используются в модуле 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.
На самом деле DI - это своего рода шаблон стратегии. Всякий раз, когда вы хотите иметь возможность обмена какой-либо логикой / реализацией, вы обычно находите интерфейс и соответствующий метод установки в классе хоста, чтобы связать вашу индивидуальную реализацию этого интерфейса.
Ответ от самого Мастера. @Oliver, не могли бы вы указать здесь больше шаблонов?
Gaurav
7
Spring - это набор передовых шаблонов API, вы можете составить список покупок из них, сколько у вас под рукой. Способ, которым разработан API, побуждает вас (но не заставляет) следовать этим шаблонам, и в половине случаев вы следуете им, не зная, что вы это делаете.
Шаблон локатора службы - ServiceLocatorFactoryBean хранит информацию обо всех компонентах в контексте. Когда клиентский код запрашивает службу (компонент) по имени, он просто находит этот компонент в контексте и возвращает его. Клиентскому коду не нужно писать код, связанный с Spring, чтобы найти компонент.
Шаблон фабричного метода: BeanFactory для создания экземпляра объекта. Синглтон: тип экземпляра может быть одноэлементным для контекста. Прототип: тип экземпляра может быть прототипом. Шаблон построителя: вы также можете определить метод в классе, который будет отвечать за создание сложного экземпляра.
Контейнер Spring генерирует объекты bean-компонентов в зависимости от области видимости bean-компонентов (singleton, prototype и т. Д.). Это похоже на реализацию паттерна Абстрактная фабрика . Я уверен, что во внутренней реализации Spring каждая область должна быть привязана к определенному классу фабрики.
Ответы:
Используется множество различных шаблонов проектирования, но есть несколько очевидных:
Прокси - широко используется в АОП и удаленном взаимодействии .
Синглтон - beans, определенные в файлах конфигурации Spring, по умолчанию являются одиночными.
Шаблонный метод - широко используется для работы с повторяющимся стандартным кодом (например, закрытие соединений и т. Д.). Например, JdbcTemplate , JmsTemplate , JpaTemplate .
Обновите следующие комментарии: Для MVC вы можете прочитать Справочник по MVC
Некоторые очевидные шаблоны, используемые в MVC:
Контроллер представления модели :-). Преимущество Spring MVC в том, что ваши контроллеры являются объектами POJO, а не сервлетами. Это упрощает тестирование контроллеров. Следует отметить, что от контроллера требуется только возвращать имя логического представления, а выбор представления остается за отдельным ViewResolver . Это упрощает повторное использование контроллеров для различных технологий просмотра.
Передний контроллер . Spring предоставляет DispatcherServlet, чтобы гарантировать, что входящий запрос будет отправлен вашим контроллерам.
View Helper - Spring имеет ряд настраиваемых тегов JSP и макросов скорости, помогающих отделить код от представления в представлениях.
источник
Foo
и вы получаете экземпляр дляFoo
каждого контекста, вы получите две разные ссылки на объекты. Вместо этого здесь применен шаблон проектирования наилегчайшего весаИ, конечно же, внедрение зависимостей или IoC (инверсия управления), что является центральным для всего материала BeanFactory / ApplicationContext.
источник
На самом деле DI - это своего рода шаблон стратегии. Всякий раз, когда вы хотите иметь возможность обмена какой-либо логикой / реализацией, вы обычно находите интерфейс и соответствующий метод установки в классе хоста, чтобы связать вашу индивидуальную реализацию этого интерфейса.
источник
Spring - это набор передовых шаблонов API, вы можете составить список покупок из них, сколько у вас под рукой. Способ, которым разработан API, побуждает вас (но не заставляет) следовать этим шаблонам, и в половине случаев вы следуете им, не зная, что вы это делаете.
источник
Шаблон локатора службы - ServiceLocatorFactoryBean хранит информацию обо всех компонентах в контексте. Когда клиентский код запрашивает службу (компонент) по имени, он просто находит этот компонент в контексте и возвращает его. Клиентскому коду не нужно писать код, связанный с Spring, чтобы найти компонент.
источник
Observer-Observable: используется в механизме событий ApplicationContext
источник
Заводской шаблон также используется для загрузки bean-компонентов через BeanFactory и контекст приложения.
источник
Шаблон фабричного метода: BeanFactory для создания экземпляра объекта. Синглтон: тип экземпляра может быть одноэлементным для контекста. Прототип: тип экземпляра может быть прототипом. Шаблон построителя: вы также можете определить метод в классе, который будет отвечать за создание сложного экземпляра.
источник
Контейнер Spring генерирует объекты bean-компонентов в зависимости от области видимости bean-компонентов (singleton, prototype и т. Д.). Это похоже на реализацию паттерна Абстрактная фабрика . Я уверен, что во внутренней реализации Spring каждая область должна быть привязана к определенному классу фабрики.
источник