Які шаблони дизайну використовуються в рамках Spring? [зачинено]


90

Які шаблони дизайну використовуються в рамках Spring?


Він включає більше 10 шаблонів, включаючи ..MVC, фронтальний контролер, помічник перегляду, синглтон, прототип, завод тощо. javabench.in/2012/02/design-patterns-being-used-in-spring.html
Рауль,

Відповіді:


74

Використовується безліч різних моделей дизайну, але є кілька очевидних:

  • Проксі - активно використовується в AOP та віддалено .

  • Singleton - компоненти, визначені у весняних конфігураційних файлах, за замовчуванням є однотонними.

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


Оновіть такі коментарі: Для MVC ви можете прочитати Довідник MVC

Деякі очевидні закономірності, що використовуються в MVC:

  • Контролер перегляду моделі :-). Перевага Spring MVC полягає в тому, що ваші контролери є POJO, а не сервлетами. Це полегшує тестування контролерів. Зауважимо одне, що контролер повинен повертати лише логічне ім’я подання, а вибір подання залишається в окремому ViewResolver . Це полегшує повторне використання контролерів для різних технологій перегляду.

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

  • View Helper - Spring має ряд користувацьких тегів JSP та макроси швидкості, щоб допомогти відокремити код від презентації у поданнях.


Дякую, які шаблони дизайну використовуються у модулі Spring MVC?
Тоні

10
Я не думаю, що Spring використовує синглтон для квасолі. Зверніть увагу на те, що компонент із односторонньою сферою дії матиме по одному екземпляру для контексту програми . Отже, якщо у вашому додатку є два контексти Spring, вони завантажують один і той же синглтон-компонент, Fooі ви отримуєте екземпляр Fooкожного контексту, ви отримаєте два різних посилання на об’єкт. Замість цього шаблон проектування застосовується тут мухи
Луїджі Мендоса

@Luiggi Mendoza, ви маєте на увазі, що весна не має однотонних об'єктів? будь ласка, поясніть мені з деякими роз'ясненнями.
Kumaresan Perumal

1
@KumaresanPerumal існує суттєва різниця між шаблоном Singleton та екземпляром Singleton (зверніть увагу на верхній / нижній регістр S). Шаблон Singleton - це підтримка єдиного екземпляра об’єкта через цілу програму. Що Spring робить при виявленні одиночного компонента, це створення одного екземпляра для контексту програми . Контекст програми є основним компонентом Spring і служить для делегування створення та отримання об'єктів. Компонент singleton створюється лише один раз для контексту програми.
Луїджі Мендоса,

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

12

І звичайно ін’єкція залежностей, або IoC (інверсія управління), яка є основною для всього BeanFactory / ApplicationContext.


10

Річ у дійсності насправді є якоюсь схемою стратегії. Кожного разу, коли ви хочете бути логічними / реалізованими, ви зазвичай знаходите інтерфейс та відповідний метод сетеру в хост-класі, щоб підключити вашу власну реалізацію цього інтерфейсу.


Відповідь від самого Учителя. @Oliver не могли б ви вказати тут більше шаблонів?
Gaurav

6

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


3

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



1

Фабричний шаблон також використовується для завантаження компонентів через контекст BeanFactory та Application.


1

Шаблон фабричного методу: BeanFactory для створення екземпляра об'єкта Singleton: тип екземпляра може бути одиночним для контексту Prototype: тип екземпляра може бути прототипом. Шаблон конструктора: ви також можете визначити метод у класі, який буде відповідати за створення складного екземпляра.


0

Spring-контейнер генерує об'єкти bean в залежності від сфери дії (singleton, prototype тощо). Отже, це виглядає як реалізація шаблону Abstract Factory . У внутрішньому впровадженні Spring, я впевнений, кожен обсяг повинен бути прив’язаний до певного класу заводських видів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.