Π Π°Π·Π½ΠΎΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ spring: Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Spring Framework? ΠžΡ‚ внСдрСния зависимостСй Π΄ΠΎ Web MVC / Π₯Π°Π±Ρ€

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Java Spring ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ²: установка, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° MVC Framework

Spring β€” это простая Π² использовании срСда Java MVC с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π°Ρ Π²ΡΠ΅ΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŽΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ для простой ΠΈ быстрой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java.

Spring β€” это ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Hibernate, Struts, Tapestry, JSF ΠΈ Ρ‚. Π΄.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Spring Framework

Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ особСнности Spring Framework:

  • ΠŸΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹
  • ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½Π½Ρ‹ΠΉ
  • БыстроС Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅
  • ΠœΠΎΡ‰Π½Π°Ρ абстракция
  • ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ мноТСство рСсурсов
  • ДСкларативная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°
  • ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ комплСксныС инструмСнты

ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ история

Π’ΠΎΡ‚ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Ρ‹ ΠΈΠ· истории:

  • Spring Framework Π±Ρ‹Π» написан Π ΠΎΠ΄ΠΎΠΌ ДТонсоном ΠΈ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ Π² июнС 2002 Π³ΠΎΠ΄Π°.
  • Spring La с Ρ‚ вСрсия выпуск Π² ΠΌΠ°Ρ€Ρ‚Π΅ 2004 Π³ΠΎΠ΄Π°
  • ВСрсия Spring 1.2.6 Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Π² 2006 Π³ΠΎΠ΄Ρƒ
  • Выпуск вСрсии Spring 2.0 Π² октябрС 2006 Π³.
  • Выпуск вСрсии Spring 2.5 Π² ноябрС 2007 Π³.
  • Выпуск вСрсии Spring 3 Π² Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ 2009 Π³.
  • Выпуск вСрсии Spring 3.1 Π² Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ 2011 Π³.
  • Выпуск вСрсии Spring Framework 4 Π² Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ 2013 Π³ΠΎΠ΄Π° с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Java 8
  • Spring Framework 4.2.0 вСрсия Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Π² июлС 2015 Π³ΠΎΠ΄Π°
  • Spring Framework 4.2.1 вСрсия Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Π² сСнтябрС 2015
  • ВСрсия Spring Framework 4.3 Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° 10 июня 2016 Π³ΠΎΠ΄Π°
  • Spring Framework 5.0 вСрсия Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Π² июнС 2017 Π³ΠΎΠ΄Π°

Spring Framework Architecture

Spring Framework прСдоставляСт 20 ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² зависимости ΠΎΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ прилоТСния.

Core ΠΈ Bean ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ IoC ΠΈ DI.

Основной ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° ΠΏΠΎΠ΄ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Core, Beans, Context ΠΈ Expression Language.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· этих ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² дСталях:

Spring Core:

Основной ΠΌΠΎΠ΄ΡƒΠ»ΡŒ обСспСчиваСт всС основныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ каркаса ΠΏΡ€ΡƒΠΆΠΈΠ½Ρ‹. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ IoC (Inversion of Control) ΠΈ Inpension Injection.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ BeanFactory, которая прСдставляСт собой ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ„Π°Π±Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ шаблона.

Context

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Context основан Π½Π° ΠΏΡ€ΠΎΡ‡Π½ΠΎΠΉ основС, прСдоставляСмой модулями Core ΠΈ Beans, ΠΈ являСтся срСдой, которая ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈ настроСнным.

Π―Π·Ρ‹ΠΊΠΈ вСсСннСго выраТСния (SpEL):

Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ язык Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для измСнСния ΠΈ запроса Π³Ρ€Π°Ρ„ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²ΠΎ врСмя выполнСния.

Доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ интСграция:

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ состоит ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ JDBC, ORM, JDBC, OXM, JMS ΠΈ Transaction.

  • ORM: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ORM обСспСчиваСт ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ / ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° нСзависимо ΠΎΡ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. Он Π±ΡƒΠ΄Π΅Ρ‚ основан Π½Π° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ отобраТСния.
  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ JDBC состоит ΠΈΠ· уровня абстракции JDBC. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ выполнСния кодирования, связанного с JDBC.
  • OXM: Object XML Mappers (OCM) ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ XML ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.
  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ Java Messaging Service ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ созданиС ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ сообщСний.
  • Вранзакция: Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ управлСния для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… интСрфСйсов ΠΈ для всСх Ρ‚ΠΈΠΏΠΎΠ² POJO (Plain Old Java Object)

Web

Web: Π² этом ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΠΈ сСрвлСтов ΠΈ контСкст Π²Π΅Π±-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Π΅Π±-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… частСй.

Π’Π΅Π±-сСрвлСт: Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π° основС MVC для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Web-Socket: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° WebSocket ΠΈ Π΄Π²ΡƒΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŽΡŽ связь ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром Π² Π²Π΅Π±-прилоТСниях.

Web-ΠΏΠΎΡ€Ρ‚Π»Π΅Ρ‚: этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ называСтся Spring-MVC-Portlet module. Он ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΡ€Ρ‚Π»Π΅Ρ‚Ρ‹ Π½Π° основС Spring ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности модуля Web-сСрвлСтов.

AOP: язык AOP являСтся ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ инструмСнтом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ: Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ инструмСнтарий класса ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… сСрвСров ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ВСст: Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ тСстированиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Spring с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов TestNG ΠΈΠ»ΠΈ JUnit. Он ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Spring ApplicationContexts ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ этих контСкстов.

Spring β€” MVC Framework

Spring Web MVC Framework ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ модСль-прСдставлСниС-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π²Π°ΠΌ Π±Ρ‹Ρ‚ΡŒ Π³ΠΈΠ±ΠΊΠΈΠΌΠΈ ΠΈ слабо связанными Π²Π΅Π±-прилоТСниями.

Π¨Π°Π±Π»ΠΎΠ½ MVC позволяСт Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ аспСкты прилоТСния, прСдлагая ΡΠ»Π°Π±ΡƒΡŽ связь ΠΌΠ΅ΠΆΠ΄Ρƒ этими элСмСнтами. Spring MVC Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈ слабо связанныС Π²Π΅Π±-прилоТСния.

Π”ΠΈΠ·Π°ΠΉΠ½ MVC Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ, Π»ΠΎΠ³ΠΈΠΊΡƒ прСдставлСния ΠΈ Π»ΠΎΠ³ΠΈΠΊΡƒ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ элСгантноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для использования MVC Π² Spring Framework с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DispatcherServlet.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ MVC?

  • DispatcherServlet ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ запрос.
  • ПослС этого DispatcherServlet связываСтся с HandlerMapping. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, связанный с этим ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ запросом.
  • ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ этот запрос, вызывая ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ слуТбы ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ModelAndView, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ DispatcherServlet.
  • Имя прСдставлСния отправляСтся ViewResolver для поиска фактичСского прСдставлСния для Π²Ρ‹Π·ΠΎΠ²Π°.
  • ПослС этого DispatcherServlet пСрСдаСтся Π² View для отобраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, прСдставлСниС рСндСрится ΠΈ отправляСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.

АспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

АспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ позволяСт Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ свойствам ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ½Π° компилируСтся Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ являСтся аспСкт, Π° Π½Π΅ класс. АспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ части, извСстныС ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

ΠœΠ΅ΠΆΠΎΡ‚Ρ€Π°ΡΠ»Π΅Π²Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ΡŒ всС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ сосрСдоточСна Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС Π² ΠΊΠΎΠ΄Π΅, Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ², аутСнтификация ΠΈ Ρ‚. Π΄.

Π•Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ динамичСский шаблон оформлСния Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°. Π­Ρ‚ΠΎΡ‚ шаблон Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ классу, оборачивая исходный класс ΠΈ дублируя Π΅Π³ΠΎ интСрфСйс ΠΈ удаляя исходный.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ АОП

Π’ АспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π΅ΡΡ‚ΡŒ сСмь основных ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ обсудим ΠΈΡ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ:

  • АспСкт: АспСкт β€” это класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ JEE. Π­Ρ‚ΠΎ касаСтся Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… классов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ Ρ‚. Π”. АспСкты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ классом, настроСнным с использованиСм ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Spring XML, ΠΈΠ»ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ классом, Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ @Aspect.
  • Π’ΠΎΡ‡ΠΊΠ° соСдинСния: это Ρ‚ΠΎΡ‡ΠΊΠ°-ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π² Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π³Π΄Π΅ аспСкт ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠ°ΠΊ выбрасываСмоС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ модифицируСтся.
  • Π‘ΠΎΠ²Π΅Ρ‚: Π‘ΠΎΠ²Π΅Ρ‚ β€” это фактичСскиС дСйствия, прСдпринятыС для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ соСдинСния. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, ΠΊΠΎΠ³Π΄Π° конкрСтная Ρ‚ΠΎΡ‡ΠΊΠ° соСдинСния встрСчаСт Ρ‚ΠΎΡ‡ΠΊΡƒ сопоставлСния Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
  • Pointcut: Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ с Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ соСдинСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, слСдуСт Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ этот совСт ΠΈΠ»ΠΈ Π½Π΅Ρ‚.
  • Π¦Π΅Π»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚: Π½Π° основС Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ устройства. Π’ AOP подкласс создаСтся Π²ΠΎ врСмя выполнСния, Π³Π΄Π΅ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² зависимости ΠΎΡ‚ ΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.
  • ΠŸΡ€ΠΎΠΊΡΠΈ: этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ создан послС примСнСния Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΊ Ρ†Π΅Π»Π΅Π²ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ.
  • ΠŸΠ»Π΅Ρ‚Π΅Π½ΠΈΠ΅: это ΠΌΠ΅Ρ‚ΠΎΠ΄ связывания аспСкта с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ прилоТСния для создания Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Установка Java Spring

Π’ΠΎΡ‚ пошаговая информация ΠΏΠΎ установкС Java Spring Π½Π° ваш ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€:

Π¨Π°Π³ 1) Π—Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° сайт www.eclipse.org.

Π¨Π°Π³ 2) Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ установщик Eclipse Neon ΠΈ установитС Π΅Π³ΠΎ Π² своСй систСмС Windows.

Π¨Π°Π³ 3) НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ 64-Ρ€Π°Π·Ρ€ΡΠ΄Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽΒ».

Π¨Π°Π³ 4) ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Eclipse IDE для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Java ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° ссылку Β«64-bitΒ».

Π¨Π°Π³ 5) НаТмитС Π½Π° ссылку Β«Windows 64-bitΒ».

Π¨Π°Π³ 6) НаТмитС Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ZIP-Ρ„Π°ΠΉΠ».

Π¨Π°Π³ 7) РаспакуйтС zip-Ρ„Π°ΠΉΠ» для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ.

Π¨Π°Π³ 8) НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠžΠ±Π·ΠΎΡ€Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области.

Π¨Π°Π³ 9) НаТмитС Β«Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ экранС.

Π¨Π°Π³ 10) ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Eclipse Marketplace.

Π¨Π°Π³ 11) Поиск ΠΈ установка ΠΏΠ»Π°Π³ΠΈΠ½Π° Spring.

Π¨Π°Π³ 12) ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒΒ».

Π¨Π°Π³ 13) ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΈΠ΅ условий ΠΈ установка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

ΠŸΠΎΡΠ²ΠΈΡ‚ΡΡ экран привСтствия с Ρ…ΠΎΠ΄ΠΎΠΌ установки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

Π¨Π°Π³ 14) НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ сСйчас», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Eclipse IDE ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния.

Π‘ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ экран:

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Spring Framework

  • Spring позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ прилоТСния ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ класса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ POJO.
  • ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ для Hibernate, JDBC, Hibernate, JPA ΠΈ Ρ‚. Π”., Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ объСм написанного ΠΊΠΎΠ΄Π°.
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ для Java Enterprise Edition (JEE).
  • Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, Ссли количСство ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ классов являСтся сущСствСнным, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ± этом ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅.
  • Он ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, форматирования, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Ρ‚. Π”.
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ с использованиСм Spring, являСтся простым, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠ΄, зависящий ΠΎΡ‚ срСды, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ Π² эту срСду.

НСдостатки Spring Framework

Π’ΠΎΡ‚ минусы Spring Framework.

  • Блишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ.
  • Код общСдоступСн β€” это Π²ΠΈΠ΄Π½ΠΎ всСм.
  • НС ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Spring Framework — это… Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Spring Framework?

Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. Spring.

The Spring Framework (ΠΈΠ»ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ Spring)Β β€” ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для Java-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π’Π°ΠΊ ΠΆΠ΅ сущСствуСт Ρ„ΠΎΡ€ΠΊ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET Framework, Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ Spring.NET.[2].

ΠŸΠ΅Ρ€Π²Π°Ρ вСрсия Π±Ρ‹Π»Π° написана Π ΠΎΠ΄ΠΎΠΌ ДТонсоном, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π΅Ρ‘ вмСстС с ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ своСй ΠΊΠ½ΠΈΠ³ΠΈ Β«Expert One-on-One Java EE Design and DevelopmentΒ»[3] (Wrox Press, ΠΎΠΊΡ‚ΡΠ±Ρ€ΡŒ 2002 Π³ΠΎΠ΄Π°).

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π±Ρ‹Π» Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0 license Π² июнС 2003 Π³ΠΎΠ΄Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· 1.0 Π±Ρ‹Π» Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ Π² ΠΌΠ°Ρ€Ρ‚Π΅ 2004. Spring 2.0 Π±Ρ‹Π» Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ Π² октябрС 2006, Spring 2.5Β β€” Π² ноябрС 2007, Spring 3.0 Π² Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ 2009, ΠΈ Spring 3.1 Π² Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ 2011. ВСкущая вСрсия — 3.1.3.

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Spring Framework Π½Π΅ обСспСчивал ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ модСль программирования, ΠΎΠ½ стал ΡˆΠΈΡ€ΠΎΠΊΠΎ распространённым Π² Java сообщСствС Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° ΠΈ Π·Π°ΠΌΠ΅Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Enterprise JavaBeans. Spring Framework прСдоставляСт Π±ΠΎΜΠ»ΡŒΡˆΡƒΡŽ свободу Java Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ прСдоставляСт Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ Π»Ρ‘Π³ΠΊΠΈΠ΅ Π² использовании срСдства Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°.

ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, особСнности ядра Spring Framework ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Π² любом Java ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΈ сущСствуСт мноТСство Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΈ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ для построСния Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java Enterprise ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅. По этим ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Spring ΠΏΡ€ΠΈΠΎΠ±Ρ€Ρ‘Π» Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ ΠΈ признаётся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΊΠ°ΠΊ стратСгичСски Π²Π°ΠΆΠ½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Spring Framework

Spring Framework обСспСчиваСт Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ Java Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Java. Из-Π·Π° ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ структурныС элСмСнты, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ состоит. Spring Framework Π½Π΅ всСцСло связан с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ Java Enterprise, нСсмотря Π½Π° Π΅Π³ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с Π½Π΅ΠΉ, Ρ‡Ρ‚ΠΎ являСтся Π²Π°ΠΆΠ½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π΅Π³ΠΎ популярности.

Spring Framework, вСроятно, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ извСстСн ΠΊΠ°ΠΊ источник Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ (features), Π½ΡƒΠΆΠ½Ρ‹Ρ… для эффСктивной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ слоТных бизнСс-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π½Π΅ тяТСловСсных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ историчСски Π±Ρ‹Π»ΠΈ Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΡΡ‚ΠΈ. Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ Π΅Π³ΠΎ достоинство Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²Π²Π΅Π» Ρ€Π°Π½Π΅Π΅ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности Π² сСгодняшниС Π³ΠΎΡΠΏΠΎΠ΄ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π΄Π°ΠΆΠ΅ Π²Π½Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Java.

Π­Ρ‚ΠΎΡ‚ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ модСль ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Ρ‘ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΠΉ ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ созданы Π½Π° основС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Java. БчитаСтся, Ρ‡Ρ‚ΠΎ Spring Framework Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ модСль Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° Π»ΡƒΡ‡ΡˆΠΈΡ… стандартах индустрии, ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Ρ‘ доступной Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… областях Java.

ΠœΠΎΠ΄ΡƒΠ»ΠΈ Spring Framework’a

Spring Framework ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ рассмотрСн ΠΊΠ°ΠΊ коллСкция ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΈΠ»ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ этих Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ совмСстном ΠΈΡ… использовании. Π­Ρ‚ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ дСлятся Π½Π° структурныС элСмСнты Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… комплСксных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ:

  • Inversion of Control ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€: ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ Java ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ аспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования: Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, которая Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° возмоТностями ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π½Π° Java Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ.
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ: Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с систСмами управлСния рСляционными Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Java ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ JDBC ΠΈ Object-relational mapping срСдства обСспСчивая Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ Π² большом числС Java-based environments.
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ управлСния транзакциями: координация Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… API управлСния транзакциями ΠΈ инструмСнтарий настраиваСмого управлСния транзакциями для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Java.
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Model-view-controller: каркас, основанный Π½Π° HTTP ΠΈ сСрвлСтах ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ мноТСство возмоТностСй для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ настройки (customization).
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ доступа: конфигурируСмая ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Java-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ Π² стилС RPC, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ RMI, CORBA, HTTP-based ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ web-сСрвисы (SOAP).
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ: ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ инструмСнтарий процСссов Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΎ популярных ΠΈ ΡΡ‚Π°Π²ΡˆΠΈΡ… ΠΈΠ½Π΄ΡƒΡΡ‚Ρ€ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ стандартами ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², инструмСнтов, ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Spring Security (Ρ€Π°Π½Π΅Π΅ извСстный ΠΊΠ°ΠΊ Acegi).
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ управлСния: ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ прСдставлСниС ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Java ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ для локальной ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JMX.
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сообщСниями: конфигурируСмая рСгистрация ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Π΅ΠΉ сообщСний для ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ сообщСний с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JMS, ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСний ΠΏΠΎ стандарту JMS API.
  • ВСстированиС: каркас, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ классы для написания ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… тСстов.

Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Spring Framework являСтся Inversion of Control ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт срСдства конфигурирования ΠΈ управлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Java с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСфлСксии. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°: созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡƒΡ‚Π΅ΠΌ связывания ΠΈΡ… ΠΌΠ΅ΠΆΠ΄Ρƒ собой.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ создаваСмыС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ УправляСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ»ΠΈ Beans. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° осущСствляСтся ΠΏΡƒΡ‚Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ XML Ρ„Π°ΠΉΠ»ΠΎΠ², содСрТащих ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Bean’ов ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для создания bean’ов

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Π»ΠΈΠ±ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Поиска зависимости, Π»ΠΈΠ±ΠΎ ВнСдрСния зависимости. Поиск зависимости — шаблон проСктирования, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимости — шаблон проСктирования, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ экзСмпляры ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎ ΠΈΡ… ΠΈΠΌΠ΅Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π»ΠΈΠ±ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструктора, Π»ΠΈΠ±ΠΎ свойства, Π»ΠΈΠ±ΠΎ Ρ„Π°Π±Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

МодСль-прСдставлСниС-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€

Spring MVCΒ β€” Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° запросы ΠΈ прСдоставляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ возмоТности для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°:

  • ЯсноС ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ слоями Π² MVC ΠΈ запросах.
  • БтратСгия интСрфСйсов — ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ интСрфСйс Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свою Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹.
  • Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ всСгда ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.
  • Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ тСсно связаны с Servlet API.
  • Высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π’ Π²Π΅Π±-прилоТСниях ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ части Spring Framework, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Spring MVC.

Доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ

Spring прСдоставляСт свой слой доступа ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ всС популярныС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

JDBC, iBatis / MyBatis, Hibernate, JDO, JPA, Oracle TopLink, Apache OJB, Apache Cayenne ΠΈΒ Ρ‚.Β Π΄.

Для всСх этих Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², Spring прСдоставляСт Ρ‚Π°ΠΊΠΈΠ΅ особСнности:

  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рСсурсами — автоматичСскоС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ освобоТдСниС рСсурсов Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉΒ β€” ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ доступС ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π² ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Spring-Π°
  • Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΡΡ‚ΡŒΒ β€” ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² опСрациях с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ
  • Распаковка рСсурсов — ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŒΠ΅ΠΊΡ‚ΠΎΠ² Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΏΡƒΠ»Π° соСдинСний
  • Абстракция для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ BLOB ΠΈ CLOB

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями Π² Spring Ρ€Π°ΠΌΠΊΠ°Ρ… приносит абстракции ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Java. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ возмоТности:

  • Ρ€Π°Π±ΠΎΡ‚Π° с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ транзакциями
  • Ρ€Π°Π±ΠΎΡ‚Π° с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ транзакциями
  • Ρ€Π°Π±ΠΎΡ‚Π° с Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ сохранСния Π² транзакциях

«БоглашСниС ΠΏΡ€Π΅ΠΆΠ΄Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΒ» Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ прилоТСния

Spring RooΒ β€” Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ «соглашСниС ΠΏΡ€Π΅ΠΆΠ΄Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΒ» для быстрого создания бизнСс-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с:

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ

Spring IntegrationΒ β€” Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для J2EE ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний ΠΈΠ»ΠΈ для построСния событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.

  • Ρ€ΠΎΡƒΡ‚Π΅Ρ€Ρ‹
  • трансформСры
  • Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρ‹ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ тСхнологиями ΠΈ систСмами (HTTP, AMQP, JMS, XMPP, SMTP, IMAP, FTP (FTPS/SFTP), Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы ΠΈΒ Ρ‚.Β Π΄.)
  • Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹
  • Π°ΠΊΡ‚ΠΈΠ²Π°Ρ‚ΠΎΡ€Ρ‹ сСрвисов
  • Π°ΡƒΠ΄ΠΈΡ‚ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅

Spring Hadoop

29 фСвраля 2012 Π³ΠΎΠ΄Π° VMware выпустил ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Spring Framework с Apache Hadoop. Новый Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Spring Hadoop[4] ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ возмоТности Spring Framework с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Hadoop, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ сСрвСра Π΄ΠΎ тысяч ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, Π° Π½Π΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ срСдства. Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡ Hadoop Framework, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° Java, open-source ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ для распрСдСлСнной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² кластСрах ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ модСль программирования, с Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ Spring для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java/J2EE, VMware создал ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ΄ Β«Π·ΠΎΠ½Ρ‚ΠΈΠΊΒ» Spring Data[5].[6]

Π‘Ρ€Π΅Π΄ΠΈ возмоТностСй Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°:

  • дСкларативная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ HBase;
  • спСциализированная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Spring Batch для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ HDFS ΠΈ всС Ρ‚ΠΈΠΏΡ‹ Π·Π°Π΄Π°Π½ΠΈΠΉ Hadoop;
  • ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° использования с ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Spring;
  • ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Hadoop ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ шаблонной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для соСдинСний ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° с Hadoop;
  • дСкларативная ΠΈ программируСмая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° для инструмСнтов Hadoop, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ FsShell ΠΈ DistCp.[6]

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

Бсылки

Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

основы ΠΈ ΡƒΡ€ΠΎΠΊΠΈ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

На сСгодняшний дСнь практичСски для всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ скриптовый ΠΌΠ΅Ρ‚ΠΎΠ΄ программирования – Spring Java. ОсновноС прСимущСство Π΄Π°Π½Π½ΠΎΠ³ΠΎ языка Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ прСдоставляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² Π²ΠΈΠ΄Π΅ простого Π½Π°Π±ΠΎΡ€Π° loose-coupled элСмСнтов, Π½Π΅ привязанных Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ.

ΠŸΡ€ΠΎΡ‰Π΅ говоря, Ρ‡Π΅ΠΌ мСньшС Π±Π»ΠΎΠΊΠΈ прилоТСния связаны ΠΌΠ΅ΠΆΠ΄Ρƒ собой, Ρ‚Π΅ΠΌ Π»Π΅Π³Ρ‡Π΅ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΈ ΠΏΡ€ΠΈ этом ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ структуру. Одним ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ярких ΠΈ простых ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² являСтся руководство транзакциями. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Spring Java ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ структурой Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ осущСствляСт нСзависимо ΠΎΡ‚ Π³Π»Π°Π²Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ связанности с Π‘Π”. КакиС-Π»ΠΈΠ±ΠΎ измСнСния конструкции Π»ΠΎΠ³ΠΈΠΊΠΈ Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ идСю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Spring ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ элСмСнты ΠΈ структуры ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² Π»ΡŽΠ±Ρ‹Ρ… мСстах практичСски нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. По сути, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΠΎΠΉΠΌΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ управляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Spring Java. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄Π°Π½Π½Ρ‹ΠΉ скриптовый язык программирования Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ тСстированиС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ элСмСнт, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ для ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° IoC, достаточно просто ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π»ΠΎΠΆΠ½Ρ‹Π΅ взаимосвязи ΠΈ Ρ‚Π΅ΠΌ самим ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ описания.

Spring Java Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ подстройку элСмСнтов ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΠΈ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ прилоТСния ΠΏΠΎΠ΄ сСбя, Π½Π΅ дСлая ΠΏΡ€ΠΈ этом Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… пСрСнастроСк с основном ΠΊΠΎΠ΄Π΅ Spring.

БСгодня ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎ Java Spring ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΈ Π² ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΌ количСствС ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языках (английском, русском ΠΈ Ρ‚. Π΄). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΡΠΈΠ»ΠΈΡ‚ΡŒ «Π”ΠΆΠ°Π²Ρƒ» Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π° ΠΌΡ‹ Π² этом Π²Π°ΠΌ постараСмся ΠΏΠΎΠΌΠΎΡ‡ΡŒ!

Spring ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ

Как построСна Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° «Π”ΠΆΠ°Π²Π° спринг» ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π·Π½Π°Π΅Ρ‚ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ эту ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ:

  • Установка BeanDefinition ΠΈ парсированиС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ контСкста (Xml, JavaConfig, Groovy ΠΈ AnnotationConfigApplicationContext). На ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ этапС ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ всС интСрфСйсы – BeanDefinition. Π’ зависимости ΠΎΡ‚ Π²Ρ‹Π±ΠΎΡ€Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ — парсированиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² прилоТСния.
  • Настройка созданных интСрфСйсов (Π²ΠΈΠ΄ΠΎΠ²) – BeanDefinition.
  • Установка кастомных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ FactoryBean.
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экзСмплярных (Ρ‡Π΅Ρ€Π½ΠΎΠ²Ρ‹Ρ…) Π±ΠΈΠ½ΠΎΠ².
  • Настройка созданных Π±ΠΈΠ½ΠΎΠ².
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ написанных Π±ΠΈΠ½ΠΎΠ².

Spring: Π½Π°Ρ‡Π°Π»ΠΎ

Если Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π° «Π”ΠΆΠ°Π²Π° спринг», Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ с Java ee Spring (Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ). Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ «Π”ΠΆΠ°Π²Π°». Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ создаСт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ Π·Π°Π΄Π°Ρ‡, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΈ ΡƒΠΆΠ΅ Ρ€Π°Π½Π΅Π΅ описаны Π½Π° основС Java. ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ошибки Π² написании.

Spring ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… нСзависимых Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², Ρ‚Π°ΠΊ ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТных конструкций (Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π² Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅). Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π΄Π°Π½Π½Ρ‹Ρ… структур ΠΌΠΎΠΆΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ объСм работоспособности ΠΏΡ€ΠΈ совмСстном запускС прилоТСния. Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° структурныС Π΄Π΅Ρ‚Π°Π»ΠΈ комплСксных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² зависимости ΠΎΡ‚ ΠΈΡ… прСдназначСния:

  • ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ – inversion of control. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ элСмСнтов прилоТСния ΠΈ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Java.
  • Доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ – Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рСляционными Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (Π‘Π”) Π² Java. Благодаря Π΄Π°Π½Π½ΠΎΠΌΡƒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡƒ обСспСчиваСтся Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ количСства слоТных Π·Π°Π΄Π°Ρ‡ Π½Π° Π±Π°Π·Π΅ Java environments.
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ аспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΉ настройки. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΡŒ Π½Π° Java.
  • УправлСния транзакциями. Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ АР ΠΈ инструмСнтарий Π½Π°ΡΡ‚Ρ€ΠΎΠΈΠ²ΡˆΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ управлСниями Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ для элСмСнтов Java.
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ доступа ΠΈ управлСния. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ происходит локально.
  • АутСнтификация ΠΈ авторизация. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… популярных ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°Ρ… Ρ‡Π΅Ρ€Π΅Π· Spring Security.

На сСгодняшний дСнь для всСх Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Π² «Π‘ΠΏΡ€ΠΈΠ½Π³» прСдоставляСтся ряд возмоТностСй:

  • АвтоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рСсурсами.
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ доступС ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ самого «Π‘ΠΏΡ€ΠΈΠ½Π³Π°».
  • ΠŸΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями Π²ΠΎ врСмя ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.
  • Π Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ рСсурсов.
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° абстракции Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ….

НСобходимо ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ всСх Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это основа Java Spring. Для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… рСкомСндуСтся Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌ ΠΈ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ….

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Java Spring (Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ)

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ прилоТСния Π² Spring ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ нСсколькими способами. Одним ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных ΠΈ достаточно простых считаСтся вынос ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π² XML-Ρ„Π°ΠΉΠ». Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… вСрсиях Java Spring. Для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ инструмСнты ΠΊΠ°ΠΊ java (1.5), tomcat (6), ant (1.7), eclipse (3), junit 4x.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π·Π°Π΄Π°Ρ‡ΠΊΡƒ Π² Java Spring, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠΉ поочСрСдности:

  • Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ саму структуру прилоТСния. Для этого Π²Π°ΠΌ понадобится Π½Π° eclipse ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ — Spring IDE. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Springapp ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ war.
  • Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ index.jsp. Π’ Java Spring web Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ WEB-INF ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Π½Π΅Π΅ web.xml.
  • Π”Π΅ΠΏΠ»ΠΎΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² tomcat. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ANT-скриптом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ†Π΅Π»ΡŒ для компиляции, пСрСноса ΠΈ строСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
  • ΠŸΡ€ΠΎΠΏΠΈΡΠ°Π² ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ всС прилоТСния, сдСлайтС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ. ЗапускайтС tomcat ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΠΉΡ‚Π΅ Π²Π΅Π±-страничку с адрСсом: localhost:8080/springapp/.
  • Π—Π°Ρ‚Π΅ΠΌ Π²Π°ΠΌ понадобится ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Spring Framework ΠΈ Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ.

На этом этапС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ спСшно Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈ настройку сСтСвого окруТСния. Π”Π°Π»ΡŒΡˆΠ΅ слСдуСт ΠΏΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Spring Java config:

  • Для Π½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния Π² web.xml, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ WEB-INF. Наша Ρ†Π΅Π»ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ диспСтчСр Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… запросов прилоТСния.
  • ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ Π΄ΠΈΡΠΏΠ΅Ρ‚Ρ‡Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… запросов. ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ всС запросы с Π²ΠΈΠ΄Π° ‘.htm’ Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π½Π° сСрвлСт-диспСтчСр.
  • Π—Π°Ρ‚Π΅ΠΌ скопируйтС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² WEB-INF/lib.
  • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π² springapp.web ΠΈ ΠΏΡ€ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ тСст.
  • Π—Π°Π΄Π°ΠΉΡ‚Π΅ Π²ΠΈΠ΄ ΠΈ скомпилируйтС прилоТСния Π½Π° сСрвСрС.
  • ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ прилоТСния.

Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΌΡ‹ сдСлали Π² Spring Java? Для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ пСрСчислСнных ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ нСпонятны, поэтому ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠΏΡ€ΠΎΡ‰Π΅:

  1. ΠœΡ‹ создали ΡΡ‚Π°Ρ€Ρ‚ΠΎΠ²ΡƒΡŽ страницу– index.jsp, которая слуТит для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ установки окруТСния.
  2. ΠŸΡ€ΠΎΠΏΠΈΡΠ°Π»ΠΈ диспСтчСр с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ описания springapp-servlet.xml.
  3. Π‘ΠΎΠ·Π΄Π°Π»ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈ прописали для Π½Π΅Π³ΠΎ тСкст.
  4. Π—Π°Π΄Π°Π»ΠΈ Π²ΠΈΠ΄ прилоТСния.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Java Spring Security ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½?

Spring Security позволяСт Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ прилоТСния. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ обСспСчиваСт Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Spring Framework.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Spring Security:

  • SecurityContextHolder. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ бСзопасности, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запустил прилоТСния. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SecurityContextHolder сохраняСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ThreadLocal, Π° это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ контСкст бСзопасности доступСн для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅.
  • SecurityContext. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ бСзопасности систСмы, которая связана с запросом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Authentication.
  • Authentication. РаспознаСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ стороны.
  • GrantedAuthority. ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°Ρ… всСго прилоТСния.
  • UserDetails. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для настройки Authentication ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… источников систСм бСзопасности. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠ°ΠΊ Π½ΠΈΠΊΠ½Π΅ΠΉΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΈ Ρ„Π»Π°Π³ΠΈ.
  • UserDetailsService. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ UserDetails с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ интСрфСйса.

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Java

Integration Java Spring – это ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя настройку Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ… Π·Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ сообщСний. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° построСниС дСйствСнно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹:

  • Π ΠΎΡƒΡ‚Π΅Ρ€ΠΎΠ².
  • АдаптСров для взаимодСйствия с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ систСмами.
  • Активаторов сСрвисов.
  • ВрансформСров ΠΈ Π΄Ρ€.

Spring Hadoop

Π­Ρ‚ΠΎ новая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° VMware, которая соСдинила Π΄Π²Π° ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° — Apache Hadoop ΠΈ Spring. Π‘Ρ€Π΅Π΄ΠΈ мноТСства прСимущСств Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° стоит Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ нСсколько основных. Π­Ρ‚ΠΎ:

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° Π±Π°Π·Π΅ HBase.
  • ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Batch Spring.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° пользования с ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Java Spring.
  • ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Hadoop.
  • Устройства шаблонной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² с Hadoop.
  • ДСкларативная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° для инструмСнтов Hadoop.
  • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Hadoop.

Java Hibernate

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ всС Π²Π΅Π±-прилоТСния Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· хранСния большого количСства ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ – Π‘Π£Π‘Π” ΠΈ Ρ‚. Π΄. По структурС ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ частотС использования Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° нСсколько ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΏΠΏ, ΠΈ Ρ‚Π°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ рСляционныС ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнными. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, описаниС Π΄Π°Π½Π½Ρ‹Ρ… конструкций достаточно большиС, ΠΈ Π½Π΅ всСгда ΠΈΡ… Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Java Spring — тСхнология для облСгчСния написания прилоТСния — Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ORM (Object-Relational Mapping). Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Hibernate, которая ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, с Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Π‘Π£Π‘Π” ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ транзакциями.

Для прСобраТСння ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π½Π° Java Hibernate Spring сущСствуСт нСсколько ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²:

  • Increment.
  • Identity.
  • Sequence.
  • Hilo.
  • Seqhilo.
  • Uuid.
  • Guid.
  • Native.
  • Assigned.
  • Foreign.
  • sequence-identity.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° использования Java Hibernate Spring:

  • ΠŸΡ€ΠΎΡΡ‚Π°Ρ структура ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² взаимосвязи с Π‘Π” ΠΈ POJO.
  • АвтоматичСская гСнСрация ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Primary Key.
  • HQL.
  • Кэш: Second level, Session Level ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Query.
  • Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.
  • Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° Outer Join.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ²

Одним ΠΈΠ· самих простых тСкстовых ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Java Spring являСтся написаниС прилоТСния «ΠΏΡ€ΠΈΠ²Π΅Ρ‚». ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ рСгистрации ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ слоТных конструкций ΠΈ Ρ„ΠΎΡ€ΠΌ Π½Π° bootstrap. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ простой html Π±Π΅Π· Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΈ. И пускай основная Ρ„ΠΎΡ€ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚:

  • ПолС для Π²Π²ΠΎΠ΄Π° тСкста «ΠΏΡ€ΠΈΠ²Π΅Ρ‚».
  • ΠšΠ»Π°Π²ΠΈΡˆΡƒ «ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ запись», ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ наш тСкст Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π² Π‘Π”.
  • Бписок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π½Π΅Π΅ созданиС записи.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π½Π°ΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Java Spring. ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°:

  • ΠŸΠΎΠ½ΡΡ‚Π½ΠΎΠ΅ Π΄Π΅Π»ΠΎ, установитС Π½Π° свой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Java.
  • ΠŸΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΌΠ°Π²Π΅Π½.
  • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Spring-boot.
  • УстановитС Π‘Π”.
  • РаспрСдСлитС классы ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. Π›ΡƒΡ‡ΡˆΠ΅ всСго создайтС ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½.
  • Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ create-read-update-delete.
  • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„ΠΎΡ€ΠΌΡƒ Π½Π° jsp.
  • ΠŸΡ€ΠΈΠ²ΡΠΆΠΈΡ‚Π΅ свою Ρ„ΠΎΡ€ΠΌΡƒ ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ MVC, ΠΈ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ½ΠΎ связано со Spring

MVC – это собствСнная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° «Π‘ΠΏΡ€ΠΈΠ½Π³Π°», которая ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° запросы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’ Π½Π΅ΠΉ Π·Π°Π΄Π°Π½ статистичСский Π²ΠΈΠ΄ для всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ запросно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… систСм. Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ интСрфСйса Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ простым ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎ ТСланию ΠΌΠΎΠ³ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π·Π°Π½ΠΎΠ²ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ прилоТСния. Данная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΎΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ прямоС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ front-end-ΠΊΠΎΠ΄Ρƒ. ВсС интСрфСйсы связаны с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Servlet API. Благодаря этой взаимосвязи Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ упрощаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ прилоТСния.

К Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ интСрфСйсам ΠΌΠΎΠΆΠ½ΠΎ отнСсти:

  • Model β€” модСль, Π΄Π°Π½Π½Ρ‹Π΅.
  • View β€” ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, внСшний Π²ΠΈΠ΄.
  • Controller β€” ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, установлСниС взаимосвязи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ двумя понятиями.

К Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ интСрфСйсам ΠΌΠΎΠΆΠ½ΠΎ отнСсти:

  • HandlerAdapter.
  • Controller.
  • View.
  • HandlerMapping.
  • ViewResolver.
  • HandlerInterceptor.
  • LocaleResolver.
  • MultipartResolver.

Java Spring MVC (model-view-controlle) ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй:

  • Π§Π΅Ρ‚ΠΊΠΎΠ΅ ΠΈ простоС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ запросами.
  • ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ интСрфСйс ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π° свою Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹.
  • Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.
  • ВсС интСрфСйсы связаны с API Servlet.
  • ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ эффСктивности ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ части «Π‘ΠΏΡ€ΠΈΠ½Π³Π°», Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ MVC (model-view-controlle).

Основной ΠΏΠ°ΠΊΠ΅Ρ‚

Основной ΠΏΠ°ΠΊΠ΅Ρ‚ являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ систСмы ΠΈ обСспСчиваСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ внСдрСния зависимостСй, позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π±ΠΎΠ±Π°-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Основной ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠ΅ΠΉ здСсь являСтся BeanFactory, которая обСспСчиваСт шаблон Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ, устраняСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ синглтонов ΠΈ позволяСт ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ зависимостСй ΠΎΡ‚ фактичСской Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΠ°ΠΊΠ΅Ρ‚ DAO прСдоставляСт JDBC-ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции, Ρ‡Ρ‚ΠΎ избавляСт ΠΎΡ‚ нСобходимости Π΄Π΅Π»Π°Ρ‚ΡŒ ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ JDBC-ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·Π±ΠΎΡ€ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… поставщика ΠΊΠΎΠ΄ΠΎΠ² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ошибок. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для классов, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… интСрфСйсы, Π½ΠΎ ΠΈ для всСх Π²Π°ΡˆΠΈΡ… Pojos (простых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Java).

ΠŸΠ°ΠΊΠ΅Ρ‚ ORM обСспСчиваСт ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ слоСв популярных API для отобраТСния рСляционных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ JDO, Hibernate ΠΈ Ibatis. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°ΠΊΠ΅Ρ‚ ОРМ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ всС O/R-ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„Ρ‹ Π² сочСтании с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ функциями Spring-прСдлоТСния.

АОП-ΠΏΠ°ΠΊΠ΅Ρ‚ Π² Spring обСспСчиваСт совмСстимый аспСкт ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ АОП Alliance, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠ΅Ρ‚ΠΎΠ΄-ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊ ΠΈ ΠΎΡ‚Π²ΡΠ·Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй.

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ исходных тСкстов, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ всС Π²ΠΈΠ΄Ρ‹ повСдСнчСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² ΠΊΠΎΠ΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ NET-Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹.

Π’Π΅Π±-ΠΏΠ°ΠΊΠ΅Ρ‚ Spring обСспСчиваСт основныС Π²Π΅Π±-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ многочастная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, инициализация контСкстов с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ сСрвлСтов ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ контСкста Π²Π΅Π±-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. РСализация Π² Spring MVC обСспСчиваСт Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ модСлью ΠΊΠΎΠ΄Π° Π΄ΠΎΠΌΠ΅Π½Π° ΠΈ Π²Π΅Π±-Ρ„ΠΎΡ€ΠΌΠΎΠΉ, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ особСнности Spring Framework для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

ВрСбования ΠΊ Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ прилоТСния JPA Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π»ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ написания Ρ‚Π°ΠΊΠΈΡ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ:

  • «Π”ΠΆΠ°Π²Π°»-Π±ΠΈΠ½ΠΎΠΌ ΠΈΠ»ΠΈ POJO.
  • Класс Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ (Π½Π΅ Π±Ρ‹Ρ‚ΡŒ final).
  • ΠŸΡ€ΠΎΠΏΠΈΡΠ°Π½ конструктор. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎ ΠΈΠ΄Π΅Ρ‚ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².
  • ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ Implements Serializable. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ Π² кэшС Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅.
  • ΠŸΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ всСх ΠΏΠΎΠ»Π΅ΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² Π‘Π”, Ссли Ρƒ Π½ΠΈΡ… Π½Π΅Ρ‚ Primary key.
  • НаличиС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².
  • Π’ getters ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ссылку Π½Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° Π½Π΅ Π΅Π΅ копию. ΠΠ΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массивы, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ наш Array, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ копию. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, достаточно слоТно ΠΎΡ‚ массива Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ.
  • ΠžΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π»ΠΈΡ‚Π΅Ρ€ΠΎΠΉ. ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Java Spring Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΈ значСниях Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠŸΡ€ΠΎΡ‰Π΅ говоря, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ…ΠΎΡ‚ΡŒ малСйшиС понятия, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚.
  • ΠŸΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ΄Π½Ρƒ ΠΈΠ· простых Π·Π°Π΄Π°Ρ‡. НапримСр, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ _ΠŸΠ Π˜Π’Π•Π’_, «Π·ΠΌΠ΅ΠΉΠΊΠ°» ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.
  • ΠžΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с WEB. Π›ΡƒΡ‡ΡˆΠ΅ всСго Π² этом ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ½Π»Π°ΠΉΠ½-курсы. Если Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‚ΠΎ Π±Π΅Ρ€ΠΈΡ‚Π΅ΡΡŒ снова Π·Π° ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ΡΡŒ ΡƒΠΆΠ΅ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ понятиями ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.
  • ΠŸΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ простыС Π·Π°Π΄Π°Ρ‡ΠΊΠΈ _ΠΏΡ€ΠΈΠ²Π΅Ρ‚_ Π±ΠΎΠ»Π΅Π΅ слоТными конструкциями. Π’Π°ΠΊΠΆΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²Π°ΠΌ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ. Π’Π°ΠΊ Π²Π°ΠΌ ΠΏΡ€ΠΎΡ‰Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΠΈΠ»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ программирования.

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

БущСствуСт нСсколько Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… классов:

  • «Π‘ΠΏΡ€ΠΈΠ½Π³ Π”Π°ΠΎ». Π­Ρ‚ΠΎΡ‚ класс ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π‘Π” (Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…).
  • Π‘ΠΏΡ€ΠΈΠ½ΠΈΠ½Π³ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€ΠΈ написании прилоТСния Π²ΠΎ всСх случаях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Transaction Manager. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ» ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ, автоматичСски ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒΡΡ.
  • Π‘ΠΏΡ€ΠΈΠ½ΠΈΠ½Π³ Security. Π”Π°Π½Π½Ρ‹ΠΉ класс Π·Π°Π΄Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Π»ΠΎΠ³ΠΈΠ½, ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΈ Ρ‚. Π΄). Π Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 10 Π±ΠΈΠ½ΠΎΠΌΠΎΠ² для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ эффСктивности Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Security.

Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° основных Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€ Π² Java Spring

Π—Π½Π°ΠΊΠΎΠΌΡΡΡŒ с Ρ‚Π°ΠΊΠΈΠΌ спСцифичным скриптовым ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ программирования, ΠΊΠ°ΠΊ «Π”ΠΆΠ°Π²Π° спринг», ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ Π½Π° всСх сайтах ΠΈΠ»ΠΈ Π² ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ°Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΡƒ, поэтому Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Java Spring. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

  • Inversion of Control – IoC – инвСрсия контроля ΠΈΠ»ΠΈ, ΠΏΡ€ΠΎΡ‰Π΅ говоря, Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ прилоТСния.
  • АОП – аспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Благодаря этому ΠΌΠΎΠ΄ΡƒΠ»ΡŽ «Π”ΠΆΠ°Π²Π°» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ любой Ρ‚ΠΎΡ‡ΠΊΠ΅ доступа ΠΈ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΊΠΎΠ΄.
  • MVC — Model-view-controller – это структурированный шаблон, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π΄Π°Π΅Ρ‚ ΠΈ описываСт способ построСния конструкции всСго прилоТСния, обСспСчиваСт взаимодСйствиС всСх частСй Π² ΠΎΠ΄Π½ΠΎΠΉ систСмС. Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ web.
  • Класс WEB ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°, ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° доступ ΠΊ Π±ΠΈΠ½Π°ΠΌ ΠΈ Ρ‚. Π΄.
  • ORM- Object-Relational Mapping – связываСт Π‘Π” (Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…) с концСпциями ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² программирования, создавая Π½ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ….
  • DAO ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² структурС «Π‘ΠΏΡ€ΠΈΠ½Π³Π°».
  • Service Abstraction – Π·Π°Π΄Π°Π΅Ρ‚ интСрфСйсы (внСшнСй Π²ΠΈΠ΄) прилоТСния, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° абстрагированиС Π·Π°Π΄Π°Ρ‡ΠΈ.

БСгодня ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ достаточно ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈ интСрСсной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ Java Spring. Π£Ρ€ΠΎΠΊΠΈ, ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΈ, Π²Π΅Π±-сСминары Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ скриптовый язык программирования. Если Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с написаниСм прилоТСния, пСрСсмотритС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ «Π‘ΠΏΡ€ΠΈΠ½Π³Ρƒ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π°Π²Ρ‚ΠΎΡ€Ρ‹ достаточно Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ описали всС трСбования ΠΊ структурС «Π”ΠΆΠ°Π²Π°», Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»ΠΈ Π½Π° вопросы, ΠΊΠ°ΠΊ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ часто ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅ΠΌΡ‹Π΅ ошибки.

Spring Framework β€” ВикипСдия. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Spring Framework

Spring Framework (ΠΈΠ»ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ Spring)Β β€” ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для Java-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π’Π°ΠΊΠΆΠ΅ сущСствуСт Ρ„ΠΎΡ€ΠΊ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET Framework, Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ Spring.NET[2].

ΠŸΠ΅Ρ€Π²Π°Ρ вСрсия Π±Ρ‹Π»Π° написана Π ΠΎΠ΄ΠΎΠΌ ДТонсоном, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π΅Ρ‘ вмСстС с ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ своСй ΠΊΠ½ΠΈΠ³ΠΈ Β«Expert One-on-One Java EE Design and DevelopmentΒ»[3] (Wrox Press, ΠΎΠΊΡ‚ΡΠ±Ρ€ΡŒ 2002 Π³ΠΎΠ΄Π°).

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π±Ρ‹Π» Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0 license Π² июнС 2003 Π³ΠΎΠ΄Π°. ΠŸΠ΅Ρ€Π²Π°Ρ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ вСрсия 1.0 Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Π² ΠΌΠ°Ρ€Ρ‚Π΅ 2004. Spring 2.0 Π±Ρ‹Π» Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ Π² октябрС 2006, Spring 2.5Β β€” Π² ноябрС 2007, Spring 3.0 Π² Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ 2009, ΠΈ Spring 3.1 Π² Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ 2011. ВСкущая вСрсия — 5.0.1.

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Spring Π½Π΅ обСспСчивал ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ модСль программирования, ΠΎΠ½ стал ΡˆΠΈΡ€ΠΎΠΊΠΎ распространённым Π² Java-сообщСствС Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° ΠΈ Π·Π°ΠΌΠ΅Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Enterprise JavaBeans. Spring прСдоставляСт Π±ΠΎΜΠ»ΡŒΡˆΡƒΡŽ свободу Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ; ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ прСдоставляСт Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ Π»Ρ‘Π³ΠΊΠΈΠ΅ Π² использовании срСдства Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°.

ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, особСнности ядра Spring ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Π² любом Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΈ сущСствуСт мноТСство Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΈ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ для построСния Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java Enterprise ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅. По этим ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Spring ΠΏΡ€ΠΈΠΎΠ±Ρ€Ρ‘Π» Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ ΠΈ признаётся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΊΠ°ΠΊ стратСгичСски Π²Π°ΠΆΠ½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Spring обСспСчиваСт Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Java. Из-Π·Π° ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ структурныС элСмСнты, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ состоит. Spring Π½Π΅ всСцСло связан с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ Java Enterprise, нСсмотря Π½Π° Π΅Π³ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с Π½Π΅ΠΉ, Ρ‡Ρ‚ΠΎ являСтся Π²Π°ΠΆΠ½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π΅Π³ΠΎ популярности.

Spring, вСроятно, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ извСстСн ΠΊΠ°ΠΊ источник Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ (features), Π½ΡƒΠΆΠ½Ρ‹Ρ… для эффСктивной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ слоТных бизнСс-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π½Π΅ тяТСловСсных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ историчСски Π±Ρ‹Π»ΠΈ Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΡΡ‚ΠΈ. Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ Π΅Π³ΠΎ достоинство Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²Π²Π΅Π» Ρ€Π°Π½Π΅Π΅ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности Π² сСгодняшниС Π³ΠΎΡΠΏΠΎΠ΄ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π΄Π°ΠΆΠ΅ Π²Π½Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Java.

Π­Ρ‚ΠΎΡ‚ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ модСль ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Ρ‘ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΠΉ ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ созданы Π½Π° основС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Java. БчитаСтся, Ρ‡Ρ‚ΠΎ Spring Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ модСль Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° Π»ΡƒΡ‡ΡˆΠΈΡ… стандартах индустрии, ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Ρ‘ доступной Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… областях Java.

ΠœΠΎΠ΄ΡƒΠ»ΠΈ

Spring ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ рассмотрСн ΠΊΠ°ΠΊ коллСкция ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΈΠ»ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ этих Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ совмСстном ΠΈΡ… использовании. Π­Ρ‚ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ дСлятся Π½Π° структурныС элСмСнты Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… комплСксных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ:

  • Inversion of Control-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€: ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ Java-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ аспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования: Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, которая Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° возмоТностями ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π½Π° Java Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ.
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ: Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с систСмами управлСния рСляционными Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Java-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ JDBC- ΠΈ ORM-срСдства ΠΈ обСспСчивая Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ Π² большом числС Java-based environments.
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ управлСния транзакциями: координация Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… API управлСния транзакциями ΠΈ инструмСнтарий настраиваСмого управлСния транзакциями для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Java.
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ MVC: каркас, основанный Π½Π° HTTP ΠΈ сСрвлСтах, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ мноТСство возмоТностСй для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ настройки (customization).
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ доступа: конфигурируСмая ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Java-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ Π² стилС RPC, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ RMI, CORBA, HTTP-based ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ web-сСрвисы (SOAP).
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ: ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ инструмСнтарий процСссов Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΎ популярных ΠΈ ΡΡ‚Π°Π²ΡˆΠΈΡ… ΠΈΠ½Π΄ΡƒΡΡ‚Ρ€ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ стандартами ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², инструмСнтов, ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Spring Security (Ρ€Π°Π½Π΅Π΅ извСстный ΠΊΠ°ΠΊ Acegi).
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ управлСния: ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ прСдставлСниС ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Java-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ для локальной ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JMX.
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сообщСниями: конфигурируСмая рСгистрация ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Π΅ΠΉ сообщСний для ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ сообщСний с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JMS, ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСний ΠΏΠΎ стандарту JMS API.
  • ВСстированиС: каркас, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ классы для написания ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… тСстов.

Inversion of Control

Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Spring являСтся ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Inversion of Control, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт срСдства конфигурирования ΠΈ управлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Java с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСфлСксии. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°: созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡƒΡ‚Ρ‘ΠΌ связывания ΠΈΡ… ΠΌΠ΅ΠΆΠ΄Ρƒ собой.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, создаваСмыС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ управляСмыми ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ (beans). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° осущСствляСтся ΠΏΡƒΡ‚Ρ‘ΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ XML-Ρ„Π°ΠΉΠ»ΠΎΠ², содСрТащих ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ bean’ов ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для создания bean’ов.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… способов:

  • Поиск зависимости — шаблон проСктирования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.
  • Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимости — шаблон проСктирования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ экзСмпляры ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎ ΠΈΡ… ΠΈΠΌΠ΅Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструктора, свойства ΠΈΠ»ΠΈ Ρ„Π°Π±Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

MVC

Spring ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ MVC-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, которая Π½Π΅ Π±Ρ‹Π»Π° ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π°. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Spring Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‘ ΠΊΠ°ΠΊ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ восприняли ΠΊΠ°ΠΊ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ конструкции (Ρ‚ΠΎΠ³Π΄Π°) популярного Apache Struts, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… доступных Π²Π΅Π±-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ². Π’ частности, ΠΏΠΎ ΠΈΡ… мнСнию, Π±Ρ‹Π»ΠΎ нСдостаточным Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ слоями прСдставлСния ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ слоСм ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов ΠΈ модСлью.[4]

Класс DispatcherServlet являСтся основным ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ фрэймворка ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ управлСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ интСрфСйсам, Π½Π° всСх этапах выполнСния HTTP-запроса. Об этих интСрфСйсах слСдуСт ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

Как ΠΈ Struts, Spring MVC являСтся Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π½Π° запросы. Π’ Π½Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ стратСгичСскиС интСрфСйсы для всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ соврСмСнной запросно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ систСмы. ЦСль ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ интСрфСйса — Π±Ρ‹Ρ‚ΡŒ простым ΠΈ ясным, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π΅Π³ΠΎ Π·Π°Π½ΠΎΠ²ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ссли ΠΎΠ½ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΏΠΎΠΆΠ΅Π»Π°ΡŽΡ‚. MVC ΠΏΡ€ΠΎΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ Π±ΠΎΠ»Π΅Π΅ чистому front-end-ΠΊΠΎΠ΄Ρƒ. ВсС интСрфСйсы тСсно связаны с Servlet API. Π­Ρ‚Π° связь рассматриваСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΊΠ°ΠΊ Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Spring ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ Π±ΠΎΠ»Π΅Π΅ высокого уровня. Однако эта связь оставляСт особСнности Servlet API доступными для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², облСгчая всС ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π½ΠΈΠΌ. НаиболСС Π²Π°ΠΆΠ½Ρ‹Π΅ интСрфСйсы, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Spring MVC, пСрСчислСны Π½ΠΈΠΆΠ΅:

  • HandlerMapping: Π²Ρ‹Π±ΠΎΡ€ класса ΠΈ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ входящий запрос Π½Π° основС любого Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΈΠ»ΠΈ внСшнСго для этого запроса Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΈΠ»ΠΈ состояния.
  • HandlerAdapter: Π²Ρ‹Π·ΠΎΠ² ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ входящСго запроса.
  • Controller: Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΌΠ΅ΠΆΠ΄Ρƒ МодСлью (Model) ΠΈ ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ (View). УправляСт процСссом прСобразования входящих запросов Π² Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹. ДСйствуСт ΠΊΠ°ΠΊ Π²ΠΎΡ€ΠΎΡ‚Π°, Π½Π°ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ всю ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² прСдставлСниС ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.
  • View: отвСтствСнно Π·Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π² Π²ΠΈΠ΄Π΅ тСкстов ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. НСкоторыС запросы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ΄Ρ‚ΠΈ прямо Π²ΠΎ View, Π½Π΅ заходя Π² Model; Π΄Ρ€ΡƒΠ³ΠΈΠ΅ проходят Ρ‡Π΅Ρ€Π΅Π· всС Ρ‚Ρ€ΠΈ слоя.
  • ViewResolver: Π²Ρ‹Π±ΠΎΡ€, ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ View Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ.
  • HandlerInterceptor: ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ входящих запросов. Бопоставим, Π½ΠΎ Π½Π΅ эквивалСнтСн сСрвлСт-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌ (использованиС Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π½Π΅ контролируСтся DispatcherServlet-ΠΎΠΌ).
  • LocaleResolver: ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, сохранСниС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… настроСк (язык, страна, часовой пояс) ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
  • MultipartResolver: обСспСчиваСт UploadΒ β€” Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° сСрвСр Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

Spring MVC прСдоставляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ возмоТности:

  • ЯсноС ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ слоями Π² MVC ΠΈ запросах.
  • БтратСгия интСрфСйсов — ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ интСрфСйс Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свою Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹.
  • Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ всСгда ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.
  • Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ тСсно связаны с Servlet API.
  • Высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π’ Π²Π΅Π±-прилоТСниях ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ части Spring, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Spring MVC.

Доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ

Spring прСдоставляСт свой слой доступа ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ всС популярныС Π‘Π£Π‘Π”.

JDBC, iBatis / MyBatis, Hibernate, JDO, JPA, Oracle TopLink, Apache OJB, Apache Cayenne ΠΈΒ Ρ‚.Β Π΄.

Для всСх этих Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Spring прСдоставляСт Ρ‚Π°ΠΊΠΈΠ΅ особСнности:

  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рСсурсами — автоматичСскоС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ освобоТдСниС рСсурсов Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉΒ β€” ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ доступС ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π² ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Spring-Π°
  • Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΡΡ‚ΡŒΒ β€” ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² опСрациях с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ
  • Распаковка рСсурсов — ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΏΡƒΠ»Π° соСдинСний
  • Абстракция для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ BLOB ΠΈ CLOB

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ управлСния транзакциями Π² Spring привносит ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ абстракций для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Java.
ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ возмоТности этих абстракций:

  • Ρ€Π°Π±ΠΎΡ‚Π° с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ транзакциями
  • Ρ€Π°Π±ΠΎΡ‚Π° с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ транзакциями
  • Ρ€Π°Π±ΠΎΡ‚Π° с Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ сохранСния Π² транзакциях

«БоглашСниС ΠΏΡ€Π΅ΠΆΠ΄Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΒ» Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ прилоТСния

Spring RooΒ β€” Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ «соглашСниС ΠΏΡ€Π΅ΠΆΠ΄Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΒ» для быстрого создания бизнСс-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ со:

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ

Spring IntegrationΒ β€” Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для JEE, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний ΠΈΠ»ΠΈ для построСния событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ архитСктуры…

  • Ρ€ΠΎΡƒΡ‚Π΅Ρ€Ρ‹
  • трансформСры
  • Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρ‹ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ тСхнологиями ΠΈ систСмами (HTTP, AMQP, JMS, XMPP, SMTP, IMAP, FTP (FTPS/SFTP), Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы ΠΈΒ Ρ‚.Β Π΄.)
  • Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹
  • Π°ΠΊΡ‚ΠΈΠ²Π°Ρ‚ΠΎΡ€Ρ‹ сСрвисов
  • Π°ΡƒΠ΄ΠΈΡ‚ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅

Spring Hadoop

29 фСвраля 2012 Π³ΠΎΠ΄Π° VMware выпустил ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Spring с Apache Hadoop. Новый Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Spring Hadoop[5] ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ возмоТности Spring Framework с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Hadoop, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ сСрвСра Π΄ΠΎ тысяч ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, Π° Π½Π΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ срСдства. Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡ Hadoop Framework, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° Java, open-source ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ для распрСдСлСнной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² кластСрах ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ модСль программирования, с Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ Spring для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java/JEE, VMware создал ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ΄ Β«Π·ΠΎΠ½Ρ‚ΠΈΠΊΒ» Spring Data[6].[7]

Π‘Ρ€Π΅Π΄ΠΈ возмоТностСй Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°:

  • дСкларативная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ HBase;
  • спСциализированная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Spring Batch для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ HDFS ΠΈ всС Ρ‚ΠΈΠΏΡ‹ Π·Π°Π΄Π°Π½ΠΈΠΉ Hadoop;
  • ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° использования с ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Spring;
  • ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Hadoop ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ шаблонной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для соСдинСний ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° с Hadoop;
  • дСкларативная ΠΈ программируСмая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° для инструмСнтов Hadoop, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ FsShell ΠΈ DistCp.[7]

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

Бсылки

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ спринг-Ρ€ΠΎΠ»Π»Ρ‹

Π‘ΠΏΡ€ΠΈΠ½Π³-Ρ€ΠΎΠ»Π»Ρ‹ появились Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΠΈ Π½Π°Ρ‡Π°Π»ΠΈ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сорта чая. Они вСсьма ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, довольно просты Π² ΠΏΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΈΠΈ. НаибольшСй ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ спринг-Ρ€ΠΎΠ»Π»Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² странах юго-восточной Азии, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Π•Π²Ρ€ΠΎΠΏΠ΅ ΠΈΡ… слСгка Π½Π΅Π΄ΠΎΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚. Π ΠΈΡΠΎΠ²ΡƒΡŽ Π±ΡƒΠΌΠ°Π³Ρƒ для приготовлСния спринг-Ρ€ΠΎΠ»Π»ΠΎΠ² Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚Ρ‹ΡΠΊΠ°Ρ‚ΡŒ Π² ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… супСрмаркСтах, Π° Π½Π°Π΄ Π½Π°Ρ‡ΠΈΠ½ΠΊΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ экспСримСнты. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π° Π΄ΠΈΠ΅Ρ‚Π΅, вСдь Π½Π΅ ΠΈΠ·ΠΎΠ±ΠΈΠ»ΡƒΡŽΡ‚ калориями.

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС

МногиС ΠΏΠΎ ошибкС ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ спринг-Ρ€ΠΎΠ»Π»Ρ‹ родствСнниками японских ΡΡƒΡˆΠΈ. Однако эти блюда ΠΏΠΎΡ…ΠΎΠΆΠΈ лишь Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ. Если ΠΆΠ΅ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎ вкусу ΠΈ внСшним качСствам, спринг-Ρ€ΠΎΠ»Π»Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ Ρ„Π°Ρ€ΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π±Π»ΠΈΠ½Ρ‡ΠΈΠΊΠΈ. Они ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ состоят ΠΈΠ· Ρ‚ΠΎΠ½ΠΊΠΎΠΉ рисовой Π±ΡƒΠΌΠ°Π³ΠΈ ΠΈ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠΉ Π½Π°Ρ‡ΠΈΠ½ΠΊΠΈ.

Π‘ΠΏΡ€ΠΈΠ½Π³-Ρ€ΠΎΠ»Π»Ρ‹ – блюдо, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ часто встрСчаСтся Π² рСсторанах Π―ΠΏΠΎΠ½ΠΈΠΈ, ΠšΠΈΡ‚Π°Ρ, Π‘ΠΈΠ½Π³Π°ΠΏΡƒΡ€Π°, Π’ΡŒΠ΅Ρ‚Π½Π°ΠΌΠ°, ИндонСзии. Π˜Π½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ для Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ – Π±ΡƒΠΌΠ°Π³Π° ΠΈΠ· риса, соли ΠΈ Π²ΠΎΠ΄Ρ‹. Иногда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΡƒΠΊΡƒ. Рисовой Π±ΡƒΠΌΠ°Π³ΠΎΠΉ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π½Π°Ρ‡ΠΈΠ½ΠΊΡƒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ мясо, Ρ€Ρ‹Π±Ρƒ, ΠΎΠ²ΠΎΡ‰ΠΈ, сыр, зСлСнь, Ρ„Ρ€ΡƒΠΊΡ‚Ρ‹ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π‘ΡƒΠΌΠ°Π³Ρƒ приходится Ρ€Π°Π·ΠΌΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ, вСдь Π±Π΅Π· Π²Π»Π°Π³ΠΈ ΠΎΠ½Π° становится Ρ…Ρ€ΡƒΠΏΠΊΠΎΠΉ ΠΈ Π½Π΅ поддаётся ΡΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΡŽ Π² Ρ€ΡƒΠ»Π΅Ρ‚.

Π‘ΠΏΡ€ΠΈΠ½Π³-Ρ€ΠΎΠ»Π»Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½ΠΊΠ°ΠΌΠΈ, Π½ΠΎ ΠΈ Ρ„ΠΎΡ€ΠΌΠΎΠΉ. Они Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, соус Π² составС зависит ΠΎΡ‚ страны ΠΈ ΠΎΡ‚ ΠΏΠΎΠ²Π°Ρ€ΠΎΠ². НСкоторыС ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ спринг-Ρ€ΠΎΠ»Π»Ρ‹ Ρ…ΠΎΠ»ΠΎΠ΄Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΏΠΎ вкусу горячиС ΠΈΠ»ΠΈ Ρ‚Ρ‘ΠΏΠ»Ρ‹Π΅.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π½Π°Ρ‡ΠΈΠ½ΠΊΠΈ спринг-Ρ€ΠΎΠ»Π»ΠΎΠ² – это Π³Ρ€ΠΈΠ±Ρ‹, рисовая лапша, мясо, ΠΌΠΎΡ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹, ΠΎΠ²ΠΎΡ‰ΠΈ. Однако это Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚Ρ‹. НСкоторым ΠΏΠΎ вкусу бобовая паста ΠΈ соСвый сыр. Иногда спринг-Ρ€ΠΎΠ»Π»Ρ‹ Π΄Π΅Π»Π°ΡŽΡ‚ сладкими, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„Ρ€ΡƒΠΊΡ‚Ρ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Π½Π΅ зависимости ΠΎΡ‚ состава, спринг-Ρ€ΠΎΠ»Π»Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΆΠ°Ρ€ΠΈΡ‚ΡŒ, Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΡŒ сырыми. Π“Π»Π°Π²Π½Ρ‹ΠΉ Ρ„Π°ΠΊΡ‚ΠΎΡ€, Π²Π»ΠΈΡΡŽΡ‰ΠΈΠΉ Π½Π° Π½Π°Ρ‡ΠΈΠ½ΠΊΡƒ – фантазия ΠΏΠΎΠ²Π°Ρ€Π° ΠΈ Π΅Π³ΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅.

НСмного ΠΎΠ± истории

Π—Π°Ρ€ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ спринг-Ρ€ΠΎΠ»Π»Ρ‹ Π² азиатских странах: Π² Π―ΠΏΠΎΠ½ΠΈΠΈ, Π² ИндонСзии ΠΈ Π² Π‘ΠΈΠ½Π³Π°ΠΏΡƒΡ€Π΅. НСсмотря Π½Π° различия Π² ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π½ΠΎΠΌ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ Π½Π°Ρ€ΠΎΠ΄ΠΎΠ², это блюдо всСгда ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ основными качСствами. Однако Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнности всё ΠΆΠ΅ зависят ΠΎΡ‚ страны. НапримСр, Π² Π―ΠΏΠΎΠ½ΠΈΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ водоросли для Π½Π°Ρ‡ΠΈΠ½ΠΊΠΈ, Π° Π² Π‘ΠΈΠ½Π³Π°ΠΏΡƒΡ€Π΅ – ΠΊΡ€Π΅Π²Π΅Ρ‚ΠΎΡ‡Π½ΡƒΡŽ пасту.

НазваниС блюда Π·Π°Ρ€ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π² ΠšΠΈΡ‚Π°Π΅. Π’ΠΎ врСмя китайского Нового Π³ΠΎΠ΄Π° (ВСсСннСго ΠŸΡ€Π°Π·Π΄Π½ΠΈΠΊΠ°) часто готовят спринг-Ρ€ΠΎΠ»Π»Ρ‹. Π’ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ с английского языка Β«springΒ» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «вСсна». Π’ΠΎ Π’ΡŒΠ΅Ρ‚Π½Π°ΠΌΠ΅ ΠΆΠ΅ ΠΈΡ… Ρ‡Π°Ρ‰Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ «нэмы», Ρ‡Π°ΡΡ‚ΡŒ Π²ΡŒΠ΅Ρ‚Π½Π°ΠΌΡΠΊΠΎΠΉ Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΡƒΡ…Π½ΠΈ.

Π‘ΠΏΡ€ΠΈΠ½Π³-Ρ€ΠΎΠ»Π»Ρ‹ Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠ°ΠΊ основным блюдом, Ρ‚Π°ΠΊ ΠΈ закуской, это зависит ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΉ. Π˜Ρ… Π΄Π΅Π»Π°ΡŽΡ‚ ΠΌΠ΅Π»ΠΊΠΈΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΡŒ листа рисовой Π±ΡƒΠΌΠ°Π³ΠΈ, ΠΈΠ»ΠΈ ΠΆΠ΅ большими, ΠΈΠ· Ρ†Π΅Π»ΠΎΠ³ΠΎ листа. Едят спринг-Ρ€ΠΎΠ»Π»Ρ‹ ΠΏΠ°Π»ΠΎΡ‡ΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ€ΡƒΠΊΠ°ΠΌΠΈ, Π² зависимости ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² блюда ΠΈ ΠΎΠ±Ρ‹Ρ‡Π°Π΅Π². Для обмакивания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ сладкиС, Ρ‚Π°ΠΊ ΠΈ острыС соусы. Π˜Ρ… готовят ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… цСлях. Π‘Π»Π°Π΄ΠΊΠΈΠΉ соус способСн ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ основной вкус спринг-Ρ€ΠΎΠ»Π»ΠΎΠ², Π° острый – Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², ΠΏΡ€ΠΈΠ΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠΈ.

Богласно традициям, Π² ΠšΠΈΡ‚Π°Π΅ для спринг-Ρ€ΠΎΠ»Π»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠΆΠ°ΠΉ. Π˜Ρ… ΠΎΠ±ΠΆΠ°Ρ€ΠΈΠ²Π°ΡŽΡ‚ Π΄ΠΎ появлСния ΠΊΠΎΡ€ΠΎΡ‡ΠΊΠΈ, золотистый Ρ†Π²Π΅Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ символизируСт ΠΏΡ€ΠΎΡ†Π²Π΅Ρ‚Π°Π½ΠΈΠ΅ ΠΈ ΠΎΠ±ΠΈΠ»ΠΈΠ΅ уроТая Π² Π½Π°ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰Π΅ΠΌ Π³ΠΎΠ΄Ρƒ.

Начинки ΠΈ ΠΏΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΈΠ΅

Π‘ΠΏΡ€ΠΈΠ½Π³-Ρ€ΠΎΠ»Π»Ρ‹, Π±Π΅Π· ΠΏΡ€Π΅ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ· Π»ΡŽΠ±Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². Π“Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ свСТими ΠΈ вкусными, Ρ‡Ρ‚ΠΎΠ±Ρ‹ создавали ΡƒΠ΄Π°Ρ‡Π½ΡƒΡŽ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ.

ОсновноС условиС – рисовая Π±ΡƒΠΌΠ°Π³Π°. Π‘Π΅Π· Π½Π΅Ρ‘ блюдо ΠΏΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ получится. Она получаСтся ΠΈΠ· ΠΏΡ€ΠΎΠΆΠ°Ρ€Π΅Π½Π½ΠΎΠΉ смСси риса, Π²ΠΎΠ΄Ρ‹ ΠΈ соли. Π ΠΈΡΠΎΠ²ΡƒΡŽ Π±ΡƒΠΌΠ°Π³Ρƒ Π²Π°ΠΆΠ½ΠΎ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΡΡƒΡˆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ Π³Π»Π°Π΄ΠΊΠΎΠΉ, Ρ‚ΠΎΠ½ΠΊΠΎΠΉ ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΉ. Всё это тяТСло ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎΠΌΠ°, поэтому ΠΌΠ½ΠΎΠ³ΠΈΠ΅ люди находят Ρ€ΠΈΡΠΎΠ²ΡƒΡŽ Π±ΡƒΠΌΠ°Π³Ρƒ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅. Боусы ΠΊ спринг-Ρ€ΠΎΠ»Π»Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎ Ρ€Π΅Ρ†Π΅ΠΏΡ‚Ρƒ ΠΈΠ»ΠΈ ΠΊΡƒΠΏΠΈΡ‚ΡŒ. Π’Ρ‹Π±ΠΎΡ€ Π²Π΅Π»ΠΈΠΊ ΠΈ практичСски Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½.

Π’Π°ΠΊ ΠΆΠ΅ для сворачивания спринг-Ρ€ΠΎΠ»Π»ΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π±Π°ΠΌΠ±ΡƒΠΊΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ²Ρ€ΠΈΠΊ. Π•Π³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ приобрСсти Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ Π·Π°Ρ€Π°Π½Π΅Π΅. ΠŸΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ спринг-Ρ€ΠΎΠ»Π»ΠΎΠ² – интСрСсный процСсс. Однако Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Ρƒ всСх Π΅ΡΡ‚ΡŒ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ это Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ блюдо ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ всСгда Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² рСсторанС ΠΈΠ»ΠΈ Π² ΠΊΠ°Ρ„Π΅.


ΠœΡ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π°ΠΊΠ°Π·Ρ‹ ΠΈΠ· сосСдних насСлСных ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ²: Π–Πš «Π‘Π°ΠΌΠΎΠ»Π΅Ρ‚», ΠœΠ°Ρ€ΡƒΡΠΈΠ½ΠΎ (Π›ΡŽΠ±Π΅Ρ€Ρ†Ρ‹), БНВ ΠœΠ°Ρ€ΡƒΡΠΈΠ½ΠΎ, ΠœΠ°Ρ€ΡƒΡΠΈΠ½ сад, Виктория, Виктория2, Виктория3, ЛСсноС, ΠœΠ°Ρ€ΡƒΡΠΈΠ½ Π»ΡƒΠ³, ΠœΠΎΡ‚ΡΠΊΠΎΠ²ΠΎ, ΠšΠΎΡ€Π΅Π½Π΅Π²ΡΠΊΠΈΠΉ Ρ„ΠΎΡ€Ρ‚, Машково, Павлино, МалоС Павлино, Павлино ЀорСст, Π—Π΅Π½ΠΈΠ½ΠΎ, Русавкино-Π ΠΎΠΌΠ°Π½ΠΎΠ²ΠΎ, Русавкино-ΠŸΠΎΠΏΠΎΠ²Ρ‰ΠΈΠ½ΠΎ, Π’ΠΎΡ€Π±Π΅Π΅Π²ΠΎ, Π’Π΅Ρ‚Π΅Ρ€Π°Π½.

java — Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ Spring Framework?

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка

  1. Около
  2. ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹

  3. Для ΠΊΠΎΠΌΠ°Π½Π΄
  1. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка
    ΠžΠ±Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹

  2. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка для ΠΊΠΎΠΌΠ°Π½Π΄
    Π“Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈ дСлятся частными знаниями с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ

  3. Вакансии
    ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ связанныС с Π½ΠΈΠΌ тСхничСскиС возмоТности ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π½ΠΎΠ³ΠΎ роста

  4. Π’Π°Π»Π°Π½Ρ‚
    НанимайтС тСхничСских спСциалистов ΠΈ создавайтС свой Π±Ρ€Π΅Π½Π΄ работодатСля

  5. Π Π΅ΠΊΠ»Π°ΠΌΠ°
    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³Π°ΠΌ со всСго ΠΌΠΈΡ€Π°

  6. О компании

Загрузка…

.

Spring Framework Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Spring Framework

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Spring Framework ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с этой Spring…

  • Spring — это лСгкая срСда с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, созданная Π ΠΎΠ΄ΠΎΠΌ ДТонсоном Π² 2003 Π³ΠΎΠ΄Ρƒ. полная ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ структура, я имСю Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ структура Spring ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для всСх Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ уровня для прилоТСния Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ Spring ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ уровня прилоТСния Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ struts [Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для внСшнСго интСрфСйса] ΠΈ спящСго Ρ€Π΅ΠΆΠΈΠΌΠ° [Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для связанных с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…], Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Spring ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ всС ΡƒΡ€ΠΎΠ²Π½ΠΈ.
  • Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Spring считаСтся Π½Π΅ΠΈΠ½Π²Π°Π·ΠΈΠ²Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ заставляСт программиста Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ свой класс ΠΈΠ· любого ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ класса ΠΈΠ»ΠΈ интСрфСйса, прСдоставлСнного Spring API, Π² стойках, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ использовали для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ класса дСйствия, ΠΈΠΌΠ΅Π½Π½ΠΎ поэтому стойки ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΈΠ½Π²Π°Π·ΠΈΠ²Π½Ρ‹ΠΌΠΈ.
  • Π’ случаС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° struts ΠΎΠ½ заставляСт программиста, класс программиста Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, прСдоставляСмого struts API
  • Spring — это лСгкая структура ΠΈΠ·-Π·Π° своСй ΠΌΠΎΠ΄Π΅Π»ΠΈ POJO
  • Spring Framework Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ упростила Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ J2EE, прСдставив модСль POJO

Spring, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ Ρ‚Π°ΠΊΠΎΠΉ большой спрос ΠΈΠ·-Π·Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… 3 причины….

  • ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π°
  • Π’Π΅ΡΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ
  • Π‘Π²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ соСдинСниС

ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π°

Spring framework прост, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ΠΈΠ½Π²Π°Π·ΠΈΠ²Π΅Π½, модСль POJO ΠΈ POJI

Π’Π΅ΡΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ

ЀактичСски для написания прилоТСния Spring [ ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ] Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΎ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Struts Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ сСрвСр, ΠΈ для EJB Ρ‚ΠΎΠΆΠ΅. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² источникС, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ сСрвСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ измСнСния, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ это вСсной, для тСстирования сСрвСра ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Spring Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρƒ Spring Π΅ΡΡ‚ΡŒ собствСнный ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для запуска ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Spring ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ любого Ρ‚ΠΈΠΏΠ° Java-прилоТСния, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ, начиная ΠΎΡ‚ консольного прилоТСния Π΄ΠΎ прилоТСния уровня прСдприятия.

Loose Coupling

Π’ Spring ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ слабо связаны, это основная концСпция Spring Framework, ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим эту ΡΠ»Π°Π±ΡƒΡŽ связь ΠΈ Π΅Π΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ»ΠΎΡ‚Π½ΠΎΠΉ связи

Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΡ‚ΡŒΡΡ

::. Об Π°Π²Ρ‚ΠΎΡ€Π΅ .::

БиватСя ΠšΠ°Π½Π΄ΡƒΠ»Π° — Java / J2EE Full Stack Developer

ΠžΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Java4s — Get It Yourself, популярный Π±Π»ΠΎΠ³ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Java / J2EE, ΠΏΠΎΠ»ΡŽΠ±ΠΈΡ‚Π΅ Java ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.
Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π±ΡŽΠ»Π»Π΅Ρ‚Π΅Π½ΡŒ ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅ , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΡƒΡŽ Π΄ΠΎΠ·Ρƒ руководств ΠΏΠΎ Java.

.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *