Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ spring java
ΠΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ Π½Π° 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 ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° Π½Π΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Π²ΠΎΠΊΡΡΠ³.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Spring? ΠΠ±Π·ΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Java
ΠΠ° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π²ΡΠ΅Π³ΠΎ ΠΌΠΎΠ΅Π³ΠΎ Π±Π»ΠΎΠ³Π° Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΡΠΈΡΠ΅ΠΌ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Ρ Π² ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Spring Framework. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Spring, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΈΡΠΎΠΊΠΈΠΌ ΡΠΏΠ΅ΠΊΡΡΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠΎΠ² ΠΊΠΎΠ΄Π° ΠΈ Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ΅ΡΠ½ΠΎ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ-ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π²Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΠ΅ΡΡ Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ Spring Framework Π±Π΅Π· Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΡΡΠΏΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΠ»ΠΈ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠΉ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Spring?
ΠΠΎΠΆΠ°Π»ΡΠΉ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΄Π½ΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Spring ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠ½Π°Ρ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½Π° ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ. ΠΠ±ΡΡΠ½ΠΎ Spnng ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ JΠ°vΠ°-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ Ρ ΡΡΠΈΠΌ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΡΠ²ΡΠ·Π°Π½Ρ Π΄Π²Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ°.
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Spring ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Java (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΡ , Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java Enterprise Edition (JEE)) Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ (ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Apache Struts, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ).
ΠΠΎ-Π²ΡΠΎΡΡΡ , Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½Π½Π°Ρ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°, Π° Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π²ΡΠ΅ΠΉ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΠΈ Spring β ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Spring ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½Π½ΠΎΠΉ Π² ΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅, ΡΡΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΡΠ΄ΡΠ°
Spring Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Π½ΠΎΡΠΈΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ (Π΅ΡΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ) ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° Π΅ΡΠ»ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ Π²Ρ ΡΠ΅ΡΠΈΡΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Spring, ΡΠΎ ΠΈ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ.
ΠΠ²ΠΎΠ»ΡΡΠΈΡ Spring Framework
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Spring Framework Π±Π΅ΡΠ΅Ρ Π½Π°ΡΠ°Π»ΠΎ ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ Π ΠΎΠ΄Π° ΠΠΆΠΎΠ½ΡΠΎΠ½Π° Experl One-on-One: J2EE Design and Development (Wox, 2002 Π³.). ΠΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π΄Π΅ΡΡΡΠΈΠ»Π΅ΡΠΈΠ΅ Spring Framework Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΡΠΎΡΠ»Π° Π² ΠΏΠ»Π°Π½Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°. Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½ΠΎΠ²ΡΠΉ ΠΊΡΡΠΏΠ½ΡΠΉ Π²ΡΠΏΡΡΠΊ Spring Framework, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° Π²Π°ΠΆΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅ Spring, Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΏΡΠΈΠ²Π΅Π΄Ρ ΠΊ Π²ΡΡ ΠΎΠ΄Ρ Spring Framework 4.0.
ΠΠ½Π²Π΅ΡΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ?
ΠΠ° Π·Π°ΠΌΠ΅ΡΠΊΡ! ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π° Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΡΠΈ ΡΡΡΠ»ΠΊΠ΅ Π½Π° ΠΈΠ½Π²Π΅ΡΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠ΅Π³Π΄Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ. Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Spring ΡΡΠΈ ΡΠ΅ΡΠΌΠΈΠ½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎ, ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΌΡΡΠ»Π°.
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Spring Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, ΡΠ΅ΠΌ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ, Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½Π΅Π΅ Π½Π°Π²ΡΠ·ΡΠΈΠ²ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Spring Π΄Π»Ρ DI ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π½Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π½ΡΡΡΠΈ ΡΠ²ΠΎΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΎΠ± ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΡΠΈΠ½ΡΡΡΠΌ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² JavaBean; Π½ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡ Π΅ΠΌ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡΡΡ, Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ. ΠΠΎ Π²ΡΡΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄Π΅Π»Π°Π΅ΡΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΠ΅ΠΌ DI, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΊΡΡΡΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ Π²Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² JavaBean, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π½Π΅Π΄ΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ²ΠΎΠ»ΡΡΠΈΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ Spring ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ DI, Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΎΠ±ΡΠ΅Π»Π° ΡΠΈΡΠΎΠΊΠΎΠ΅ ΠΏΡΠΈΠ·Π½Π°Π½ΠΈΠ΅ Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ Java. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π±ΡΠ»ΠΈ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ DI Π±ΡΠ»ΠΎ Π½Π°ΠΈΠ»ΡΡΡΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ DI Π±ΡΠ»ΠΈ ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ·ΡΡΠ΅Π½Ρ.
Π JEE 6 Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ JSR-330 ΡΡΠ°Π» ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ, Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π² ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. ΠΠ° ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° EJB (Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 3.0) ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ»Π° ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π°; Ρ ΡΠ΅Π»ΡΡ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Enterprise JavaBeans Π±ΡΠ»Π° ΠΏΡΠΈΠ½ΡΡΠ° ΠΌΠΎΠ΄Π΅Π»Ρ DI.
ΠΠΎΠ»Π΅Π·Π½ΠΎ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ DI ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ DI ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΠΌΠ°Π»ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½Π° ΠΎΡΠ½ΡΠ΄Ρ Π½Π΅ Π»ΠΈΡΠ΅Π½Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ². Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, DI ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΡΡΡΠ΄Π½ΠΈΡΡ Π²Ρ ΡΡΠ½Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π°, Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π½Π΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ ΠΎΡΠΎΡΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ΄Π΅. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΎΠΏΡΡΠ° ΡΠ°Π±ΠΎΡΡ Ρ DI. Π‘ ΠΎΠ±ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡΡΠ° ΠΈ ΡΠ»Π΅Π΄ΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡΠΌ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ DI (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ), ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π±ΡΠ΄ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½Ρ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΠΊΠ°ΡΡΠΈΠ½Π΅ Π² ΡΠ΅Π»ΠΎΠΌ. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠΈΠ²Π°ΡΡ ΡΡΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎ Π½Π΅ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΏΡΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Java 8
ΠΠ΅ΡΡΠΈΡ Java 8 ΠΏΡΠΈΠ²Π½ΠΎΡΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°Ρ Π²Π°ΡΡΠ²Π°ΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Π² Spring Framework 4, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠ²Π»ΡΡΡΡΡ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Spring. ΠΡΡΠ³Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Java 8 Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ j ava. time (JSR-310) ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ Spring Framework 4.0 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Java 8, ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ JDK 6 Update 18. ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½ΠΎΠ²ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ°ΠΌΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ Java, ΡΠ°ΠΊΡΡ ΠΊΠ°ΠΊ 7 ΠΈΠ»ΠΈ 8.
ΠΡΠΏΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Spring
ΠΡΠΏΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΠΠ) ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ, Ρ.Π΅. Π»ΠΎΠ³ΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Ρ ΡΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π΅Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠ΄Ρ ΠΎΠ΄ Spring ΠΊ ΠΠΠ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΎΠΊΡΠΈ Π΄Π»Ρ ΡΠ΅Π»Π΅Π²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΡΠΎΠ²Π΅ΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠΈΡΠΎΠ΄Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΎΠΊΡΠΈ JDK, ΡΠ΅Π»Π΅Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΎΠ±ΡΡΠ²Π»ΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ ΡΠΎΠ²Π΅Ρ ΠΠΠ.
ΠΡΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ΠΠΠ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Eclipse AspectJ (www.eclipse.org/aspectj), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ Π±ΠΎΠ»ΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ.
Π₯ΠΎΡΠΎΡΠ°Ρ Π½ΠΎΠ²ΠΎΡΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΠΈΡ Spring ΠΈ ΠΠΠ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 2.0, Π² Spring ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΡΠ½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ AspectJ.
ΠΠΈΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ.
ΠΠ° Π·Π°ΠΌΠ΅ΡΠΊΡ! ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ Spring Framework 3.2, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ @AspectJ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Java Config.
ΠΠ±Π° Π²ΠΈΠ΄Π° ΠΠΠ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΈ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΠΠ ΠΈΠ· Spring Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ AspectJ, ΠΏΡΠΈΡΠ΅ΠΌ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Spring ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅ΡΠΈΠ²Π°ΡΡ ΠΎΠ±Π° Π²ΠΈΠ΄Π° ΠΠΠ.
ΠΠΠ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’ΠΈΠΏΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΠΌΠΎΠ΅ Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΠΠ, ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΠΠ Π²ΡΡ ΠΎΠ΄ΡΡ Π΄Π°Π»Π΅ΠΊΠΎ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²Π½ΡΡΡΠΈ ΡΠ°ΠΌΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Spring Framework ΠΠΠ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ΅Π»Π΅ΠΉ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ.
Π―Π·ΡΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Spring (SpEL)
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ Π² Spring
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² Spring ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΠ L- ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Validator. ΠΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ Π² ΠΊΠ»Π°ΡΡ, ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΡΠΉ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ΅Π»Π΅Π²ΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Errors, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠ° Π»ΡΠ±ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅.
Π Spring ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ValidationUtils, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° Π΄ΡΡΠ³ΠΈΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΠΎΠ², ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π°Π»ΠΈΡΠΈΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π²ΡΠΎΠ΄Π΅ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Errors.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 3.0, Π² Spring Π΄ΠΎΡΡΡΠΏΠ½Π° Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ JSR-303. ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ API-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ LocalValidatorFactoryBean ΠΈ Π²Π½Π΅Π΄ΡΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Validator Π² Π»ΡΠ±ΡΠ΅ Π±ΠΈΠ½Ρ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Spring. ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Spring Π½Π°ΠΉΠ΄Π΅Ρ Π»Π΅ΠΆΠ°ΡΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Spring ΡΠ½Π°ΡΠ°Π»Π° ΠΈΡΠ΅Ρ Hibemate Validator (hibernate. org /subproj ects/ validator), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ JSR-303. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, JSF 2 ΠΈ Google Web Toolkit), Π²ΠΊΠ»ΡΡΠ°Ρ Spring MVC, ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ JSR-303 Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅. ΠΡΠΎΡΠ»ΠΈ ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π°, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΊ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅, ΡΠ°ΠΊ ΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ .
ΠΠ° Π·Π°ΠΌΠ΅ΡΠΊΡ! ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ Spring Framework 4.0, ΠΏΠΎΠΌΠ΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π²Π΅ΡΡΠΈΡ 1.1 ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Bean Validation API (JSR-349).
ΠΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ Π² Spring
ΠΠ° Π·Π°ΠΌΠ΅ΡΠΊΡ! ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ Spring Framework 4.0, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° iBATIS Π±ΡΠ»Π° ΡΠ΄Π°Π»Π΅Π½Π°. ΠΡΠΎΠ΅ΠΊΡ MyBatis-Spring ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ Spring; Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://mybatis.github.io/spring/.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ Π±Π΅Π·ΡΠ΄Π΅ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ° ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈ ΠΎΠ±Π»Π°ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ, ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ Π±ΡΠ»ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ «ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ». ΠΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ»ΡΠΆΠΈΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΠΏΠ°ΡΠ°Ρ «ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅» ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠΎΠ² Π΄Π°Π½Π½ΡΡ (Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π° Π½ΠΈΡ ΡΡΡΠ»Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π½Π° NoSQL), Π³ΡΠ°ΡΠΎΠ²ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ½ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ ΡΠ°ΠΊΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΠΈ Π½Π΅ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ Spritag, Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Spring Data (http: //proj ects. spring. io/ spring-data). ΠΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π±ΡΠ» ΡΠ°Π·Π΄Π΅Π»Π΅Π½ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Ρ ΡΠ΅Π»ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΠΎ Π΄ΠΎΡΡΡΠΏΡ ΠΊ Π΄Π°Π½Π½ΡΠΌ.
ΠΠ° Π·Π°ΠΌΠ΅ΡΠΊΡ! ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π½Π΅ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ Π² Spring Π² ΠΌΠΎΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅ Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ. ΠΠ»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅ΡΡΡ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠΎΠΉ, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠΉ ΡΠ°Π½Π΅Π΅ ΠΏΡΠΎΠ΅ΠΊΡ Spring Data Π±ΡΠ΄Π΅Ρ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΎΡΠΏΡΠ°Π²Π½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ. ΠΠ° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΊΠ°Π·Π°Π½Ρ Π½Π΅ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π΄Π»Ρ ΡΡΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ .
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° JDBC Π² Spring Π΄Π΅Π»Π°Π΅Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ JDBC Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ, Π΄Π°ΠΆΠ΅ Π² ΠΎΡΠΎΠ±ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ . ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Hibemate, JDO ΠΈ JPA Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΈ Π±Π΅Π· ΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ΅ ΠΠ Π’-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΡΠΎΠΊΡΠ°ΡΠ°Ρ Π·Π°ΡΡΠ°ΡΡ Π½Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ API-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Spring Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ ΡΠ΅ΡΠ΅Π· Π»ΡΠ±ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠΉ Spring.
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² Spring ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ Oracle, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Hibemate Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ ΡΡΠ΅Π±ΡΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ Oracle ΡΡΠ΅Π΄ΡΡΠ²Π°, ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΡΠ°ΡΡΡ ΡΡΠΎΠ²Π½Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ API-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² JDBC, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Spring.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Object to XML Mapping (ΠΠ₯Π) Π² Spring
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ»ΡΠΆΠ±Ρ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ, Π»ΠΈΠ±ΠΎ Π½Π° ΡΠ΅^Π»ΡΡΠ½ΠΎΠΉ ΠΎΡΠ½ΠΎΠ²Π΅, Π»ΠΈΠ±ΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ Π΄Π°Π½Π½ΡΡ ΡΡΠΈΡΠ°Π΅ΡΡΡ XML. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° JavaBean Π² ΡΠΎΡΠΌΠ°Ρ XML ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Spring ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Java Π² XML ΠΈ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΡΡΡΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ΅ ΠΊ Π»ΡΠ±ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Spring ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ±ΡΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄Π»Ρ ΠΌΠ°ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ (ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² JavaBean Π² XML) ΠΈ Π΄Π΅ΠΌΠ°ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ (ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ XML Π² ΠΎΠ±ΡΠ΅ΠΊΡΡ Java) Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Π»ΡΠ±ΡΠ΅ Π±ΠΈΠ½Ρ Spring. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠ°ΠΊ Java Architecture for XML Binding (JAXB), Castor, XStream, JiBX ΠΈ XMLBeans.
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Spring ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ. ΠΠ° ΡΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ²Π½Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΡΠΏΡΠΎΡΠ°Π΅ΡΡΡ ΡΠΌΠ΅Π½Π° Π»Π΅ΠΆΠ°ΡΠ΅Π³ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΠΈ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ². ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΠ°ΡΡ Ρ ΠΏΡΠΎΡΡΡΡ , Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ , ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ ΡΠ΅ΡΡΡΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌ, ΠΌΡΠ»ΡΡΠΈΡΠ΅ΡΡΡΡΠ½ΡΠΌ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌ, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΡΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Π£ΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ JEE
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ°ΡΡΡΡΠ΅ΠΌΡ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡ 01, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Spring, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΡΡΠΎΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ DI Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° EJB ΠΈΠ· JEE. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ JCP ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΎΡΡ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ EJB. ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 3.0 ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ EJB, Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ ΠΠ ^ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π±ΡΠ» ΡΠΏΡΠΎΡΠ΅Π½ ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ DI.
ΠΠ»Ρ Π»ΡΠ±ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ², ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΡ Π² ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΡΠ΅ΡΠ΅Π· JNDI, ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Spring ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΈΡΠΊΠ° ΠΈ Π²Π½Π΅Π΄ΡΡΡΡ ΡΠ΅ΡΡΡΡΡ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ JNDI, ΠΊΠ°ΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΠΌ ΠΊ JNDI, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Ρ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
MVC Π½Π° Π²Π΅Π±-ΡΡΠΎΠ²Π½Π΅
Π₯ΠΎΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Spring ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π² Π»ΡΠ±ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ , ΠΎΡ Π½Π°ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π΄ΠΎ Π²Π΅Π±, ΠΎΠ½Π° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠΈΡΠΎΠΊΠΈΠΉ ΡΠΏΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Spring, Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ²Π»ΡΠ΅ΡΡΡ MVC. Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ Spring ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ»Π°ΡΡ ΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ Π²Π΅Π±-ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ MVC.
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΎΠ±ΡΠΈΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ Π² Spring MVC. Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ JSP ΠΈ JSTL (Java Standard Tag Library β ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² Java), ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ»Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² Spring, Π² ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Apache Velocity, FreeMarker, Apache Tiles ΠΈ XSLT. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π°Π±ΠΎΡ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΡΠΎΡΠ°ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π²ΡΠ²ΠΎΠ΄Π° Microsoft Excel, PDF ΠΈ JasperReports.
ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π²Ρ ΡΠΎΡΡΠ΅ΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Spring MVC Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ Π΄Π»Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ Π²Π°ΡΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ Spring ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ Π²Π΅Π±-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Struts, JSF, Atmosphere, Google Wfeb Toolkit (GWT) ΠΈ Ρ.Π΄.
Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π³ΠΎΠ΄Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π²Π΅Π±-ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΡΡΡΠ΅ΠΌΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π»Π°ΡΡ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΎΡΠΊΠ»ΠΈΠΊΠ° ΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ, ΠΈ ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Ajax β ΡΠΈΡΠΎΠΊΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π°ΡΡΡΠ΅Π½Π½ΡΡ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Rjch Internet Application β RIA). Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΡΡ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π½Π° Π»ΡΠ±ΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΌΠ°ΡΡΡΠΎΠ½Ρ ΠΈ ΠΏΠ»Π°Π½ΡΠ΅ΡΡ. ΠΡΠΎ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² Π²Π΅Π±ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ HTML5, JavaScript ΠΈ CSS3.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° WebSocket
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ Spring Framework 4.0, Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Java API Π΄Π»Ρ WebSocket (JSR-356). Π WfebSocket ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ API-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π² Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ . Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π² ΡΡΠΈΠ»Π΅ WfebSocket ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΠΏΡΠΎΡΡΠΎΡ Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ Π΄Π²ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΎΠ±ΠΌΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π»Ρ Π±ΡΡΡΡΠΎΡΠ΅Π°Π³ΠΈΡΡΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ
ΠΠΎΡΡΡΠΏ ΠΈΠ»ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² Java Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ°Π±ΠΎΡΠΎΠΉ. ΠΠΌΠ΅Ρ Π΄Π΅Π»ΠΎ Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ Spring, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π² ΡΠ²ΠΎΠ΅ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠΈΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ ΡΠ»ΡΠΆΠ±Π°ΠΌ.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Spring ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ°, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ RMI (Java Remote Method Invocation β ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Java), JAX-WS, ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ Hessian ΠΈ Burlap ΠΎΡ Caucho, JMS, AMQP (Advanced Message Queuing Protocol β ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΎΡΠ΅ΡΠ΅Π΄ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ) ΠΈ REST. Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΡΠΈΠΌ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌ, Spring ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΠ’Π’Π , Π±Π°Π·ΠΈΡΡΡΡΠΈΠΉΡΡ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Java. ΠΠ° ΡΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠΊΡΠΈ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ Spring, ΠΏΡΠΎΠΊΡΠΈ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ° Π²Π½Π΅Π΄ΡΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² Π²Π°ΡΠΈ ΠΊΠ»Π°ΡΡΡ, ΡΡΠΎ ΡΡΡΡΠ°Π½ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΡΠΎΠΊΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ
ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΈΡΠ½ΡΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ Π²ΠΈΠ΄ΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π² Spring Framework. ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Spring ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΠΉ API-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΎΡΠΎΡΠΎ ΡΠΎΠ³Π»Π°ΡΡΠ΅ΡΡΡ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ Spring DI. Π Spring ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ JavaMail API.
Spring ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅-ΠΏΡΠΎΡΠΎΡΠΈΠΏ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ DI ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΈΠ· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠ΅ΠΌΠ° ΠΈ Π°Π΄ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ. ΠΠ΄ΠΎΠ±Π°Π²ΠΎΠΊ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅Π»Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Spring ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Π²ΡΠΎΠ΄Π΅ Apache Velocity, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ½Π΅ΡΡΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ JΠ°vΠ°-ΠΊΠΎΠ΄Π°.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π΄Π°Π½ΠΈΠΉ
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Spring ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π². ΠΠ°Π΄Π°ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π° Π½Π° Π·Π°ΠΏΡΡΠΊ Π»ΠΈΠ±ΠΎ Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠΌ, Π»ΠΈΠ±ΠΎ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Unix-ΡΡΠΈΠ»ΠΈΡΡ cron.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Spring ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΡΠ΅Π΄Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Spring ΠΌΠΎΠΆΠ΅Ρ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ CommonJ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ»Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π΄Π°Ρ Spring ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π² ΡΠΈΡΠ»Π΅ ΠΊΠΎΡΠΎΡΡΡ JDK Timer API ΠΈ Quartz, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠΎΠ±ΠΎΠΉ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π²
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ JDK 6, Π² Java ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , Π² ΡΡΠ΅Π΄Π΅ JVM. ΠΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΡΠ°ΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΌΠΎΠ³ΡΡ ΡΠ»ΡΠΆΠΈΡΡ Groovy, JRuby ΠΈ JavaScript.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Spring ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π² Spring-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Spring-Π±ΠΈΠ½, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², ΠΈ Π²Π½Π΅Π΄ΡΠΈΡΡ Π΅Π³ΠΎ Π² Π½ΡΠΆΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ JavaBean. Π ΡΠΈΡΠ»ΠΎ ΡΠ·ΡΠΊΠΎΠ² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Spring, Π²Ρ ΠΎΠ΄ΡΡ Groovy, JRuby ΠΈ BeanShell.
Π£ΠΏΡΠΎΡΠ΅Π½Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠ±Π»Π°ΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Spring Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠ΅Π³ΠΎΡΡ ΡΡΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° β ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. ΠΡΠ½ΠΎΠ²ΠΎΠΉ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΠΈ Spring Π² ΡΡΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² Java ΡΡΠ΅Π·ΠΌΠ΅ΡΠ½ΠΎ, ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΈΠ½ΡΠΆΠ΄Π°ΡΡ ΠΊ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΡΠ΄ Π»ΠΈ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ β ΠΌΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌ ΡΠ°ΠΊΡΡ ΡΠΎΡΠΊΡ Π·ΡΠ΅Π½ΠΈΡ.
Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ°ΠΊΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ ΠΏΡΠΈΠ½ΡΡΠΎ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, Π½ΠΎ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ½ΠΈΠΆΠ°ΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ Π΄Π΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. Π ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ Spring Π²Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ: Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π² Π²ΡΡΡΠ΅ΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠΉ.
ΠΠΎΠ²ΡΠ΅ΠΌΠ΅ΡΡΠ½ΠΎ Π² ΠΌΠΎΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π²ΡΡΡΠ΅ΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Spring ΠΌΠΎΠ³ΡΡ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Π²Π½ΡΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.