Spring Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Ρ‡Ρ‚ΠΎ это

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Spring Framework ΠΈ для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½?

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

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

ВозмоТности

ВсС доступныС Ρ„ΠΈΡ‡ΠΈ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ описаны ΠΏΠΎ ссылкС overview-modules

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ трСбования

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ dependency injection

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ maven ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ Spring

ΠŸΡ€ΠΈ этом ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ spring-context. Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· основных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт Π½Π°ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ dependency injection.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ MessagePrinter

Π­Ρ‚ΠΎ класс ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ сСрвиса MessageService

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΈ сам сСрвис MessageService

Π”Π°Π»Π΅Π΅ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ магия Spring, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΈΡ… вмСстС

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ Dependency Injection Π² дСйствии, MessagePrinter отвязан(decoupled) ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ MessageService ΠΏΡ€ΠΈ этом Spring Framework связываСт эти классы вмСстС Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ которая задаСтся Π² Application классС.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ссылкС spring-di-example

Updated: November 06, 2016

Share on

Leave a Comment

You May Also Enjoy

Как ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ тСсты?

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ тСстов для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ создаСм это Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Но Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ Π½Π΅ просто ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, Π° ΠΏΠΈΡΠ°Ρ‚ΡŒ Π₯ΠΎΡ€ΠΎΡˆΠΈΠ΅ тСсты.

Π’Π°ΡˆΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Angular2 ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CLI

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания Angular2-прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CLI

Как ΠΎΡ‡Π΅Π½ΡŒ быстро ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π² Windows7?

less than 1 minute read

НСкоторыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ с ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ node_modules

Π§Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ программист Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ ΠΎ Ρ†ΠΈΡ„Ρ€Π°Ρ… с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ?

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Π½ΡŽΠ°Π½ΡΡ‹ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ работая с float ΠΈ double Π² Java

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠΌ. Н. Π­. Π‘Π°ΡƒΠΌΠ°Π½Π°
Bauman National Library

ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты

Spring Framework

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

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

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

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°

Spring β€” это Π½Π΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π­Ρ‚ΠΎ ΠΎΠ±Ρ‰Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ для Ρ†Π΅Π»ΠΎΠ³ΠΎ ряда Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выполняСт свою Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π£ Spring ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ структура. Π­Ρ‚ΠΎ позволяСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ для нашСго прилоТСния ΠΈ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. ИмСнно этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈ ΠΏΠΎΠΌΠΎΠ³ Spring ΠΎΠ±ΠΎΠΉΡ‚ΠΈ своСго ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π° Π² Ρ‚ΠΎ врСмя (EJB) ΠΈ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ лидСрство. [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 3] Данная структура ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° РисункС 1.

Spring Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Ρ‡Ρ‚ΠΎ это

Spring состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ:

ΠœΠΎΠ΄ΡƒΠ»ΡŒ data access содСрТит Π² сСбС срСдства для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (Π² основном, с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…), web β€” для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² сСти (Π² Ρ‚ΠΎΠΌ числС ΠΈ для создания Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ).

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ Ρ‚Π°ΠΊ-называСмая цСлая спринг-инфраструктура: мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ входят Π² сам Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ, Π½ΠΎ ΠΏΡ€ΠΈ этом бСсшовно ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° спрингС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΡ‚ ΠΆΠ΅ spring security для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° сайтС).

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Spring Framework

Spring Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Ρ‡Ρ‚ΠΎ это

DI/IoC

IoC (Inversion of Control) β€” инвСрсия управлСния. ΠŸΡ€ΠΈ использовании Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ‹ сами прописываСтС Π² своСм ΠΊΠΎΠ΄Π΅ ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, Π° Π² случаСт с Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ β€” Ρ‡Π°Ρ‰Π΅ всСго ΡƒΠΆΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π΅ΠΌΡƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ написали. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ρ‚ΡƒΡ‚ ΡƒΠΆΠ΅ Π½Π΅ Π²Ρ‹ управляСтС процСссом выполнСния ΠΊΠΎΠ΄Π°/ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ это Π΄Π΅Π»Π°Π΅Ρ‚ Π·Π° вас. Π’Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Π΅ΠΌΡƒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ (инвСрсия управлСния).

Spring MVC

Π―Π΄Ρ€ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, прСдоставляСт Π±Π°Π·ΠΎΠ²Ρ‹Π΅ срСдства для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ (Π±ΠΈΠ½Π°ΠΌΠΈ, beans), Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй, MVC Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ доступ ΠΊ Π‘Π”. Π’ основном это Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ абстракции. По сути, нСявно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ всСми Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. Π”Π°Π½Π½Ρ‹ΠΉ интСрфСйс ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ Π½Π° РисункС 3:

Spring Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Ρ‡Ρ‚ΠΎ это

Spring Security

Spring Security это Java/JavaEE framework, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ построСния систСм Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности обСспСчСния бСзопасности для ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, созданных с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Spring Framework. Π£ Spring Security Π΅ΡΡ‚ΡŒ нСсколько характСристик: [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 4]

Spring Boot

Spring Boot позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ XML ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΆΠ΅ настраиваСт ( Ρ‚.Π΅. ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Π² порядок зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² исполняСмый ΡΠ²ΡΠ·ΡƒΡŽΡ‰Π΅Π΅ Π·Π²Π΅Π½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ вмСстС Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Spring Boot:

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

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

АспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Aspect Oriented Programming β€” AOP)

АспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (АОП) β€” это ΠΎΠ΄Π½Π° ΠΈΠ· β€œΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ программирования Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ момСнта” Π² ΠΌΠΈΡ€Π΅ Java. АОП прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сквозной Π»ΠΎΠ³ΠΈΠΊΠΈ β€” Ρ‚.Π΅. Π»ΠΎΠ³ΠΈΠΊΠΈ, которая примСняСтся ΠΊ мноТСству частСй прилоТСния β€” Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС ΠΈ обСспСчСния автоматичСского примСнСния этой Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΠΎ всСму ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ Spring ΠΊ АОП Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² создании β€œΠ΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΡ… прокси” для Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ β€œΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Π½ΠΈΠΈβ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ совСту для выполнСния сквозной Π»ΠΎΠ³ΠΈΠΊΠΈ.

Aspect, Advice, Pointcut, JointPoint и Advice Arguments в АОП

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… состоит аспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 5]

Spring Bean

Π’Π΅Ρ€ΠΌΠΈΠ½ Π±ΠΈΠ½ Π² Spring ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ссылки Π½Π° любой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, управляСмый ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π±ΠΈΠ½Ρ‹ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ спСцификации JavaBean, Π½ΠΎ это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ особСнно Ссли для связывания Π±ΠΈΠ½ΠΎΠ² Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ планируСтся ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Constructor Injection. Для получСния экзСмпляра Π±ΠΈΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ApplicationContext. IoC ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ управляСт ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ спринг Π±ΠΈΠ½Π°, ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ.

Scope Ρƒ Spring Bean

Π’ Spring прСдусмотрСны Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ области Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ дСйствия Π±ΠΈΠ½ΠΎΠ²:

Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Spring Bean

Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Spring Π±ΠΈΠ½Π° β€” врСмя сущСствования класса. Spring Π±ΠΈΠ½Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Spring ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ происходит Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ всСх зависимостСй. Когда ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ уничтоТаСтся, Ρ‚ΠΎ уничтоТаСтся ΠΈ всё содСрТимоС. Если Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ дСйствиС ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠΈ Π±ΠΈΠ½Π°, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ init() ΠΈ destroy(). Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ @PostConstruct ΠΈ @PreDestroy().

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС ΠΏΠΎ Spring Framework: Π½Π°Ρ‡Π°Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со Spring

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

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Spring, ΠΊΠ°ΠΊ извСстно, Ρ‚Ρ€ΡƒΠ΄Π΅Π½ для изучСния ΠΈΠ·-Π·Π° большого количСства ΠΎΠΏΡ†ΠΈΠΉ ΠΈ слоТного Π½Π°Π±ΠΎΡ€Π° инструмСнтов.

БСгодня ΠΌΡ‹ ΠΏΠΎΠΌΠΎΠΆΠ΅ΠΌ Π²Π°ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ свой ΠΏΡƒΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Spring с ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ° для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Spring. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², ΠΌΡ‹ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅ΠΌ Π²Π°ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ вашим ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ вСсСнним ΠΏΠΎΡ€Ρ‚Ρ„Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Spring Framework?

Spring β€” это лСгкая срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ Java Enterprise Edition (Java EE) ΠΈ модСль Enterprise JavaBeans (EJB).

Spring часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌΒ», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ Π² экосистСмС Java, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Struts, Hibernate ΠΈ Tapestry. Spring поставляСтся Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Spring MVC, Spring Boot ΠΈΠ»ΠΈ Spring Security.

Spring извСстСн своими систСмами внСдрСния зависимостСй ΠΈ инвСрсии управлСния (IoC), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Π΅ слабосвязанныС прилоТСния. Spring особСнно ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для финансовых ΠΈ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ благодаря своСй скорости, бСзопасности ΠΈ простотС построСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм. Π’Π΅Π΄ΡƒΡ‰ΠΈΠΌΠΈ работодатСлями Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Spring ΡΠ²Π»ΡΡŽΡ‚ΡΡ Citibank, eBay, Visa ΠΈ JP Morgan.

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

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

НСдостатки Spring

МногиС ΠΈΠ· этих нСдостатков Π±Ρ‹Π»ΠΈ устранСны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ изобрСтСния модуля Spring Boot, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‡Π΅Π½ΡŒ самоувСрСн ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для микросСрвисных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ соврСмСнных Spring-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ построСны Π½Π° Boot, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ старых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всС Π΅Ρ‰Π΅ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π°Π²Π½ΠΈΠΌΠΈ компаниями.

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

АрхитСктура ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Spring

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ основныС части прилоТСния Spring Framework, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ.

Beans

Spring Beans β€” это экзСмпляры классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ управляСт Spring. Они ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Spring.

Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π»ΠΈΡ‡Π½Ρ‹Π΅ экзСмпляры своих зависимостСй. Spring управляСт всСми зависимостями ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ создаСт экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ послС внСдрСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… зависимостСй. @ComponentАннотаций являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ опрСдСлСния Π±ΠΎΠ±ΠΎΠ².

Π£ bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π΅ΡΡ‚ΡŒ установлСнный ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² зависимости ΠΎΡ‚ ΠΈΡ… области дСйствия. БущСствуСт ΡˆΠ΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ² областСй: синглтон, ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ, запрос, сСанс, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π΅Π±-сокСт. ΠžΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Π΅ области ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² любом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ послСдниС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ области доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π²Π΅Π±-прилоТСния.

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” singleton, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° создаСтся ΠΈ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π² памяти. НСсколько запросов ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ±Ρ‰ΡƒΡŽ ссылку Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. Напротив, ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ созданию Π½ΠΎΠ²Ρ‹Ρ… bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° запрос Π½Π° bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ выполняСтся Π² контСкстС прилоТСния.

Autowiring

ΠœΠ΅Ρ‚ΠΎΠ΄ Spring ΠΏΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡŽ Π±ΠΎΠ±ΠΎΠ² Π² ΠΎΠ΄Π½ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Spring ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΈΡ‰Π΅Ρ‚ совпадСниС, Π° Π·Π°Ρ‚Π΅ΠΌ заполняСт Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ. @AutowiredАннотаций сообщаСт Spring, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΈ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ ΡΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π±ΠΎΠ± Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Если доступно Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Spring Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ сцСнарии Spring ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Π²Π° bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Ρ‚ΠΈΠΏΠ° Operator:

IoC Container

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ IoC β€” это ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, которая обСспСчиваСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инвСрсии управлСния. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ IoC управляСт bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ создаСт всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ экзСмпляры.

НапримСр, Ρƒ нас Π΅ΡΡ‚ΡŒ класс, VehicleΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ зависит ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса, Engine.

Π‘ IoC программисту Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, Π° Spring сдСлаСт всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ IoC Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляры ΠΎΠ±ΠΎΠΈΡ… классов ΠΈ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ EngineΠΈΡ… VehicleΠ² качСствС зависимости.

ΠœΠΎΠ΄ΡƒΠ»ΠΈ Spring ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Spring

ΠœΠΎΠ΄ΡƒΠ»ΠΈ β€” это Π½Π°Π±ΠΎΡ€Ρ‹ инструмСнтов, сгруппированныС ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΠΎΠΌΠΈΠΌΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΠΎΠ½ΠΈ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС зависимостСй для любого ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ прилоТСния.

ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Π³Ρ€ΡƒΠΏΠΏΡ‹, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ содСрТит ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠ΅ прилоТСния. БистСмы ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π»Π΅Π³ΠΊΠΎΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

ΠœΠΎΠ΄ΡƒΠ»ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Spring Project ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π½ΠΈΠΆΠ΅, сгруппированныС ΠΏΠΎ ΠΈΡ… слоям:

Spring Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Ρ‡Ρ‚ΠΎ это

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Spring Core Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ 4 модуля, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для использования Spring: Beans, Core, Context ΠΈ Spring Expression Language (SpEL). Π­Ρ‚ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ срСды Spring, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ инвСрсия управлСния (IoC), Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй, интСрнационализация, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ запросов ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π²ΠΎ врСмя выполнСния.

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ доступа / ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Spring Data обСспСчиваСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ взаимодСйствия с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Он состоит ΠΈΠ· 4 основных частСй:

Π’Π΅Π±-ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ содСрТит ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π’Π΅Π±, Π‘Π΅Ρ€Π²Π»Π΅Ρ‚Ρ‹, ΠŸΠΎΡ€Ρ‚Π»Π΅Ρ‚Ρ‹ ΠΈ Π‘ΠΎΠΊΠ΅Ρ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для создания Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Test обращаСтся ΠΊ сквозной ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Spring Test ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ тСстированиС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JUnit, TestNG, Π° Ρ‚Π°ΠΊΠΆΠ΅ созданиС Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² для ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования ΠΊΠΎΠ΄Π°.

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

Помимо этого Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Spring Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ для всСх основных Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования. Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слишком Π½ΠΈΡˆΠ΅Π²Ρ‹Π΅ для Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ бСсцСнныС API-интСрфСйсы ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности для Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ использования.

НапримСр, Spring Cloud позволяСт Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ собствСнныС ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ динамичСски Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ. Он прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ±Ρ‰ΠΈΡ… шаблонов Π² распрСдСлСнных систСмах. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Spring Boot, Spring Security, Spring DAO, Spring Context ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

ΠΠ°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Spring

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌ вас с вашим ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Spring: простая систСма Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΏΠΎ Ρ„ΠΈΠ»ΡŒΠΌΠ°ΠΌ. ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Spring Framework слоТно, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ зависимости Apache Maven ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈ XML ΠΈΠ»ΠΈ Java, ΠΈ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Π΅Π±-сСрвСр, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Tomcat.

ВмСсто этого ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Spring Boot для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ большСй части процСсса установки ΠΈ использования Π΅Π³ΠΎ встроСнного Π²Π΅Π±-сСрвСра.

Как Π½Π°Ρ‡Π°Ρ‚ΡŒ свой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Spring Initializr, Ρ‡Ρ‚ΠΎΠ±Ρ‹ быстро ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Spring Boot, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΅Π³ΠΎ простоС мСню Π²Ρ‹Π±ΠΎΡ€Π°. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² start.spring.io. Π’Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ интСрфСйс мСню, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π½ΠΈΠΆΠ΅, с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ настроСк ΠΈ полями ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ….

Spring Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Ρ‡Ρ‚ΠΎ это

Для этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΡ‹ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ Β«Maven ProjectΒ», Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ Java Π² качСствС нашСго языка ΠΈ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Spring Boot. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ вСрсий Β«SNAPSHOTΒ», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ проходят Π°Π»ΡŒΡ„Π°- ΠΈΠ»ΠΈ Π±Π΅Ρ‚Π°-тСстированиС. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Β» Π²Π²Π΅Π΄ΠΈΡ‚Π΅ io.datajek.springbasicsΒ»GroupIDΒ» ΠΈ movie-recommmender-systemΒ»ArtifactIDΒ«. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π° β€” это Π² основном имя ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ имя класса. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ добавляСтС зависимости ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «Зависимости», Π½ΠΎ для этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Spring ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. инструмСнты.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ всС Π²Π²Π΅Π»ΠΈ, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ zip-Ρ„Π°ΠΉΠ» с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ настройки. Π Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ Π² ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ мСсто Π½Π° ТСстком дискС. Π­Ρ‚Π° ΠΏΠ°ΠΏΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ pom.xmlΡ„Π°ΠΉΠ» для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² Eclipse IDE. Π§Π΅Ρ€Π΅Π· ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ врСмя Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ:

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ, Π²Ρ‹ создали своС ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Spring с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Spring Boot!

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостСй

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

Π‘Π½Π°Ρ‡Π°Π»Π° создайтС Π½ΠΎΠ²Ρ‹ΠΉ класс Π² src/main/javanamed RecommenderImplementation.

Spring Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Ρ‡Ρ‚ΠΎ это

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ recommendMoviesΠΌΠ΅Ρ‚ΠΎΠ΄ Π² RecommenderImplementation. recommendMoviesΠœΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ строку Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Ρ„ΠΈΠ»ΡŒΠΌΠ° Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ Π² массивС String.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ТСстко Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½ΠΈΠΆΠ΅:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создайтС экзСмпляр RecommenderImplementationкласса Π² MovieRecommenderSystemApplicationΡ„Π°ΠΉΠ»Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ recommendMoviesΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· RecommenderImplementationкласс.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π½Π° основС содСрТимого, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ recommendMoviesΠ·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π»ΠΎΠ³ΠΈΠΊΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ, ΠΌΡ‹ создадим Π½ΠΎΠ²Ρ‹ΠΉ класс ContentBasedFilterс Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ getRecommendations. Π’ этом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ, которая просматриваСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ история просмотров, Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ соотвСтствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Ρ‚. Π”. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎΠ± этих идСях, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ послС ΡƒΡ€ΠΎΠΊΠ°.

А ΠΏΠΎΠΊΠ° ΠΌΡ‹ ТСстко Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ getRecommendations Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Ρ‚Π΅Ρ… ΠΆΠ΅ Ρ‚Ρ€Π΅Ρ… Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ².

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ContentBasedFilterкласса Π² RecommenderImplementationклассС. Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ ТСстко Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ recommendMoviesΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π½Π° основС зависимостСй.

НаконСц, ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ toStringΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊ mainΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ массив String доступным для чтСния Π² качСствС Π²Ρ‹Π²ΠΎΠ΄Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Spring Π² 2017

Π’ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· классичСских статСй для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², ΠΌΠ΅Π»ΡŒΠΊΠ°Π²ΡˆΠΈΡ… Π½Π΅Π΄Π°Π²Π½ΠΎ Π½Π° Π₯Π°Π±Ρ€Π΅, Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΎ созданиС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Web прилоТСния Π½Π° Java. ВсС Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΎΡΡŒ с сСрвлСта, ΠΏΠΎΡ‚ΠΎΠΌ создания JSP страницы ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½Ρ‚Π° Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π² Π½Π° это свСТим взглядом я понял, Ρ‡Ρ‚ΠΎ для ΠΊΠ°ΠΊ Ρ€Π°Π· для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² это, навСрняка, выглядит ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΆΡƒΡ‚ΠΊΠΎ β€” Π½Π° Ρ„ΠΎΠ½Π΅ простых ΠΈ понятных PHP ΠΈΠ»ΠΈ Node.js, Π³Π΄Π΅ всС просто β€” написал ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, Π²Π΅Ρ€Π½ΡƒΠ» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΎΠ½ стал JSON ΠΈΠ»ΠΈ HTML. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π²Π΅ΡΡ‚ΡŒ это ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅, я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ «Π“Π°ΠΉΠ΄ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π² Spring». ЦСль это ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ созданиС Web ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java, Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ β€” Π½Π° Spring Framework это Π½Π΅ боль ΠΈ ΠΌΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΄ΠΈΡ€Π°Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· web.xml, persistence.xml, beans.xml, ΠΈ собираниС прилоТСния ΠΊΠ°ΠΊ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠΈΠΊΠ° ΠΏΠΎ кусочкам, Π° Π²ΠΏΠΎΠ»Π½Π΅ сСбС быстрый ΠΈ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½Ρ‹ΠΉ процСсс. Аудитория β€” Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, Π½Ρƒ ΠΈ Ρ‚Π΅, ΠΊΡ‚ΠΎ Π²ΠΈΠ΄Π΅Π» Π‘ΠΏΡ€ΠΈΠ½Π³ Π² Π΅Π³ΠΎ Π½Π΅ самыС Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π°.

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Spring?

Для Π½Π°Ρ‡Π°Π»Π° ΠΏΠ°Ρ€Π° слов, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ Spring. Π’ настоящСС врСмя, ΠΏΠΎΠ΄ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠΌ «Spring» часто ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ Ρ†Π΅Π»ΠΎΠ΅ сСмСйство ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ своСм, ΠΎΠ½ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Pivotal ΠΈ силами сообщСства. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ (Π½ΠΎ Π½Π΅ всС) ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ сСмСйства Spring это:

Spring Framework (ΠΈΠ»ΠΈ Spring Core)
Π―Π΄Ρ€ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, прСдоставляСт Π±Π°Π·ΠΎΠ²Ρ‹Π΅ срСдства для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ (Π±ΠΈΠ½Π°ΠΌΠΈ, beans), Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй, MVC Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ доступ ΠΊ Π‘Π”. Π’ основном это Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ абстракции. По сути, нСявно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ всСми Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ.

Spring MVC (Ρ‡Π°ΡΡ‚ΡŒ Spring Framework)
Π‘Ρ‚ΠΎΠΈΡ‚ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Ρ‚.ΠΊ. ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ вСсти Ρ€Π΅Ρ‡ΡŒ Π² основном ΠΎ Π²Π΅Π±-прилоТСниях. ΠžΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ понятиями ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ΠΎΠ² запросов, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ HTTP абстракциями ΠΈ Ρ‚.ΠΏ. Π‘ΠΎ Spring MVC ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Π΅ Π΄Π²ΠΈΠΆΠΊΠΈ, Ρ‚ΠΈΠΏΠ° Thymeleaf, Freemaker, Mustache, плюс Π΅ΡΡ‚ΡŒ сторонниС ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с ΠΊΡƒΡ‡Π΅ΠΉ Π΄Ρ€ΡƒΠ³ΠΈΡ…. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ уТаса Ρ‚ΠΈΠΏΠ° JSP ΠΈΠ»ΠΈ JSF ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Spring Data
Доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ: рСляционныС ΠΈ нСрСляционныС Π‘Π”, KV Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΈ Ρ‚.ΠΏ.

Spring Cloud
Много ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ для микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ β€” service discovery, трасировка ΠΈ диагностика, балансировщики запросов, circuit breaker-Ρ‹, Ρ€ΠΎΡƒΡ‚Π΅Ρ€Ρ‹ ΠΈ Ρ‚.ΠΏ.

Spring Security
Авторизация ΠΈ аутСнтификация, доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ Ρ‚.ΠΏ. OAuth, LDAP, ΠΈ ΠΊΡƒΡ‡Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ².

Π’ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ скорСС всСго Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π²Ρ€ΠΎΠ΄Π΅ Spring MVC, Data, Security. НиТС ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ это всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ вмСстС.

Особняком стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Spring Boot β€” это вишСнка Π½Π° Ρ‚ΠΎΡ€Ρ‚Π΅ (Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΡƒΠΌΠ°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ собствСнно сам Ρ‚ΠΎΡ€Ρ‚), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ всСго уТаса XML ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Boot позволяСт быстро ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ‚ΡŒ (Ρ‚.Π΅. Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² исполняСмый самодостаточный Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚. Π­Ρ‚ΠΎ Ρ‚ΠΎ ΡΠ²ΡΠ·ΡƒΡŽΡ‰Π΅Π΅ Π·Π²Π΅Π½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ вмСстС Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠŸΠ°Ρ€Ρƒ Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ Spring Boot:

Настройка окруТСния

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Maven с нуля, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ JAR, ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚ Π»Π΅ΠΉΠ°ΡƒΡ‚Ρ‹ Π² JAR, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Surefire для запуска тСстов, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ локально Tomcat, Π° ΡƒΠΆ Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ DispatcherServlet β€” ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Spring создаСтся Π² Π΄Π²Π° шага:

Spring Initializr позволяСт «Π½Π°Π±Ρ€Π°Ρ‚ΡŒ» Π² своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΌ Spring Boot (ΠΎΠ½ автоматичСски Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π²ΠΎ всС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, созданныС Π½Π° Initializr) собСрСт Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ.

Π’ качСствС срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ бСсплатная IntelliJ IDEA CE прСкрасно справляСтся β€” просто ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ созданный pom.xml (Maven) ΠΈΠ»ΠΈ build.gradle (Gradle) Ρ„Π°ΠΉΠ» Π² IDE.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Spring Boot ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся DevTools. Он Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Ρ†ΠΈΠΊΠ»Π° локальной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π½ΡŒΡˆΠ΅ выглядСл ΠΊΠ°ΠΊ:

Π’ Ρ‚Π΅ Π΄Ρ€Π΅Π²Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π° Π΄Π°ΠΆΠ΅ Ρ€ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°, Ρ‡Ρ‚ΠΎ Spring это DSL для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ XML ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ² Π² стСктрСйсы.

Π‘ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Spring Boot DevTools Ρ†ΠΈΠΊΠ» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сокращаСтся Π΄ΠΎ:

DevTools Π±ΡƒΠ΄ΡƒΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ измСнСния Π² скомпилированном ΠΊΠΎΠ΄Π΅ ΠΈΠ»ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ…, ΠΈ ΠΎΡ‡Π΅Π½ΡŒ быстро ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ (hot reload) Ρ‚ΠΎΠ»ΡŒΠΊΠΎ «Π±ΠΎΠ΅Π²ΡƒΡŽ» Ρ‡Π°ΡΡ‚ΡŒ прилоТСния (ΠΊΠ°ΠΊ nodemon, Ссли Π²Ρ‹ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с ΠΌΠΈΡ€ΠΎΠΌ node.js). Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, DevTools Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с Live Reload ΠΈ послС установки Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, достаточно ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² IDEA, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠΌ обновился Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

ОкСй, ΠΏΠΎΡ€Π° ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ практичСской части. Π˜Ρ‚Π°ΠΊ, наша Ρ†Π΅Π»ΡŒ β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΡ‚Π΄Π°Π΅Ρ‚ welcome страницу, обращаСтся с Π½Π΅Π΅ ΠΆΠ΅ ΠΊ собствСнному API, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ JSON с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· Π±Π°Π·Ρ‹ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΡ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.

Новый ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Π’ΠΎΡ‡Π½Π΅Π΅, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½ΡƒΠΆΠ΅Π½ β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ прСдоставлСн ΠΈ настроСн Spring Boot-ΠΎΠΌ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Embedded Tomcat

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€

Π˜Ρ‚Π°ΠΊ, наш ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ «Π΄ΠΎΠΌΠ°ΡˆΠ½ΡŽΡŽ» страницу. Код ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° выглядит Ρ‚Π°ΠΊ просто, ΠΊΠ°ΠΊ ΠΈ оТидаСтся:

ΠŸΠ°Ρ€Π° Π²Π΅Ρ‰Π΅ΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.

Π‘ ΠšΠΎΡ‚Π»ΠΈΠ½ это Π±Ρ‹ выглядСло Π΅Ρ‰Π΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈ ΠΏΡ€ΠΎΡ‰Π΅, Π½ΠΎ это ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ввСдСния сразу большого количСства Π½ΠΎΠ²Ρ‹Ρ… понятий β€” язык, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π›ΡƒΡ‡ΡˆΠ΅ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с ΠΌΠ°Π»ΠΎΠ³ΠΎ.

Класс, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ°ΠΊ @Controller автоматичСски рСгистрируСтся Π² MVC Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π΅, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ @(Get|Post|Put|Patch)Mapping ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ.

ВсС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° resources/static/ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ статичСскими, Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ CSS ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ.

Π¨Π°Π±Π»ΠΎΠ½

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Mustache (Handlebar) синтаксис, поэтому шаблон ΠΎΡ‡Π΅Π½ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ HTML

ПослС компиляции ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (⌘/Ctrl + F9) β€” ΠΌΠΎΠΆΠ½ΠΎ сразу ΠΈΠ΄Ρ‚ΠΈ Π½Π° http://localhost:8080 ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ страницу.

Доступ ΠΊ Π±Π°Π·Π΅

Для Π½Π°Ρ‡Π°Π»Π°, опишСм Π½Π°ΡˆΡƒ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ статистику посСщСний β€” ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° Π³Π»Π°Π²Π½ΡƒΡŽ страницу, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ это Π² Π±Π°Π·Ρƒ. МодСль выглядит Π΄ΠΎ крайности ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎ:

ΠŸΡ€Π΅Π΄Π²ΠΈΠ΄Ρ Ρ‡Π΅Ρ€Π΅Π΄Ρƒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² «ΠšΠ°ΠΊ ΠΆΠ΅ Π±Π΅Π· Π³Π΅Ρ‚Ρ‚Π΅Ρ€ΠΎΠ² ΠΈ сСттСров» ΠΈ «Π“Π΄Π΅ ΠΆΠ΅ equals / hashCode» β€” эти элСмСнты ΡƒΠΏΡƒΡ‰Π΅Π½Ρ‹ ΡΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ с Ρ†Π΅Π»ΡŒΡŽ упрощСния ΠΊΠΎΠ΄Π°. Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ чудовищная ошибка Π΄ΠΈΠ·Π°ΠΉΠ½Π° Java которая заставляСт ΠΏΠΈΡΠ°Ρ‚ΡŒ эту Π΅Ρ€ΡƒΠ½Π΄Ρƒ (Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ сравнСния), это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€. ΠšΠΎΡ‚Π»ΠΈΠ½ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, кстати, Ρ€Π΅ΡˆΠ°Π΅Ρ‚.

ΠœΡ‹ снова ΠΎΡ‡Π΅Π½ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ β€” Π² этот Ρ€Π°Π· ΠΈΠ· Spring Data (Ρ‚ΠΎΡ‡Π½Π΅Π΅, JPA β€” это дрСмучая спСцификация для доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ). Π­Ρ‚ΠΎΡ‚ класс описываСт модСль с двумя полями, ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… гСнСрится автоматичСски. По этому классу Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски создана модСль Π΄Π°Π½Π½Ρ‹Ρ… (Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹) Π² Π‘Π”.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ для этой ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠΎΡ€Π° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π­Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€.

ВсС, Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ β€” Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ записи. Π£ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ читатСля Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ WTF Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ β€” Ρ‡Ρ‚ΠΎ здСсь Π²ΠΎΠΎΠ±Ρ‰Π΅ происходит? ΠœΡ‹ опрСдСляСм интСрфСйс ΠΈ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΠΎΠ½ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±Π°Π·ΠΎΠΉ? ВсС Ρ‚Π°ΠΊ. Благодаря ΠΌΠ°Π³ΠΈΠΈ Spring Boot ΠΈ Spring Data «ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ» происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ внСдрСния зависимостСй, прСдоставляСмый Spring Framework. Π§Ρ‚ΠΎΠ±Ρ‹ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π½ΠΈ странно, Π½ΡƒΠΆΠ½ΠΎ всСго лишь ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² нашСм ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π±Π°Π·Ρƒ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

REST ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг β€” это Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ всС записи ΠΈΠ· Π±Π°Π·Ρ‹ Π² JSON Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅.

На Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ запросС http://localhost:8080/api/visits (ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ скомпилировав ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π΄Π°Π² DevTools ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅) ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ JSON с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄

ΠžΡΡ‚Π°Π²ΠΈΠΌ Π·Π° Ρ€Π°ΠΌΠΊΠ°ΠΌΠΈ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² исходном ΠΊΠΎΠ΄Π΅. ЦСль этого ΠΊΠΎΠ΄Π° β€” ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ JSON Π΄Π°Π½Π½Ρ‹Π΅ с сСрвСра, ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с клиСнтскими Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ React, Angular etc Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ оставлСны Π²Π½Π΅ Ρ€Π°ΠΌΠΎΠΊ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ.

ВСстированиС

Spring Ρ‚Π°ΠΊ ΠΆΠ΅ прСдоставляСт ΠΌΠΎΡ‰Π½Ρ‹Π΅ срСдства для Integration ΠΈ Unit тСстирования прилоТСния. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ абстракции Ρ‚ΠΈΠΏΠ° MockMvc ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ внСшний интСрфСйс прилоТСния, Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя имСя доступ ΠΊ Π΅Π³ΠΎ внутрСнностям. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ прилоТСния Π½Π° ΠΌΠΎΠΊΠΈ (Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ).

Аналогично для API тСстов Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ Ρ…Π΅Π»ΠΏΠ΅Ρ€ΠΎΠ² для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ JsonPath Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

ВСстированиС Π² Spring это всС Ρ‚Π°ΠΊΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π΅ΠΌΠ°, поэтому ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ сильно Π½Π° этом ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ сСйчас.

Π”Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½Ρ‚

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ Π΅ΡΡ‚ΡŒ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ².

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ сборка ΠΈ запуск прилоТСния выглядит ΠΊΠ°ΠΊ:

Для Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½Ρ‚Π° этого JAR Ρ„Π°ΠΉΠ»Π° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ установлСнной Java (JRE). Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ fat JAR β€” ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΈ встроСнный сСрвлСт ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ (Tomcat ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΈ всС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ-зависимости. По сути, ΠΎΠ½ являСтся СдинствСнным Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠΌ Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΡ‚Π΅Π½Ρ‚Π° β€” Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ просто ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ сСрвСр ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‚Π°ΠΌ.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ «Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΌ» ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Π³ΠΎ просто ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки (Java, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°).

На Π±Π°Π·Π΅ этого Ρ„Π°ΠΉΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Docker ΠΎΠ±Ρ€Π°Π· ΠΈΠ»ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½. Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ доступно Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, всС ΠΆΠ΅, ΠΎΡ‡Π΅Π½ΡŒ сТато β€” Π½ΠΎ ΡƒΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π΄Π°ΠΆΠ΅ самый простой Π²Π²ΠΎΠ΄Π½Ρ‹ΠΉ курс ΠΏΠΎ Spring Π² Ρ€Π°ΠΌΠΊΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ просто. НадСюсь, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаги Π² Spring-Π΅, ΠΈ хотя ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΅Π³ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ.

Как Π²Ρ‹ успСли Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Π² тСкстС ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· Π·Π²ΡƒΡ‡Π°Π»ΠΎ слово «ΠΌΠ°Π³ΠΈΡ Spring». По сути своСй, это ΠΎΡ‡Π΅Π½ΡŒ «ΠΌΠ°Π³ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ» Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ β€” Π΄Π°ΠΆΠ΅ взглянув Π½Π° ΡΠ°ΠΌΡƒΡŽ Π²Π΅Ρ€Ρ…ΡƒΡˆΠΊΡƒ айсбСрга ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ Spring ΠΌΠ½ΠΎΠ³ΠΎ всСго Π΄Π΅Π»Π°Π΅Ρ‚ Π² Ρ„ΠΎΠ½Π΅. Π­Ρ‚ΠΎ являСтся ΠΈ плюсом, ΠΈ минусом Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°. Плюс нСсомнСнно Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ слоТныС Π²Π΅Ρ‰ΠΈ (ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅) ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ. ΠœΠΈΠ½ΡƒΡ ΠΆΠ΅ это скрытая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ слоТныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… случаях ΠΈΠ»ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ всС тонкости ΠΈ аспСкты Π½ΡƒΠΆΠ½ΠΎ Π΅Π³ΠΎ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π·Π½Π°Ρ‚ΡŒ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ этап «Π·Π½Π°Ρ‚ΡŒ» ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Spring ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ, ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌ сообщСством, ΠΈ чистыми исходниками, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Если Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Spring Π½Π° шкалС Π ΠΈΡ‡Π° Π₯ΠΈΠΊΠΈ, ΠΎΠ½ (Spring) нСсомнСнно ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ Π² easy, Π½ΠΎ ΡƒΠΆ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ simple. Но для соврСмСнного энтСрпрайза (ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ энтСрпрайза) ΠΎΠ½ Π΄Π°Π΅Ρ‚ нСвСроятныС возмоТности Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ production-ready ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ быстро ΠΈ ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ΅ прилоТСния, Π° Π½Π΅ инфраструктуры Π²ΠΎΠΊΡ€ΡƒΠ³.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

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

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