Які шаблони дизайну використовуються в рамках 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.