Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π±ΠΈΠ½ java
Π£ΡΠΎΠΊ 2: ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Spring IoC ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ
ΠΡΠΎΡ ΡΡΠΎΠΊ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ Spring Framework IoC ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ ΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Β§5. The IoC container.
Π§ΡΠΎ Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅
ΠΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Spring Framework IoC ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
Π§ΡΠΎ Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Inversion of Control (IoC), ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ ΠΊΠ°ΠΊ Dependency Injection (DI), ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ²ΠΎΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Ρ.Π΅. ΠΎΠ±ΡΠ΅ΠΊΡΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΡΠ΅ΡΠ΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°/ΡΠ°Π±ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Ρ ΡΠ°Π±ΡΠΈΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ. ΠΠ°ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ inject(Π΄Π°Π»Π΅Π΅ «Π²Π½Π΅Π΄ΡΡΠ΅Ρ») ΡΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π±ΠΈΠ½Π°. ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈ Π½Π°Π·Π²Π°Π½ Inversion of Control, Ρ.ΠΊ. Π±ΠΈΠ½ ΡΠ°ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΡΠΌΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΎΠ½ Service Locator.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ IoC ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°
ApplicationContext ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Spring IoC ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΡΠ±ΠΎΡΠΊΠΈ Π±ΠΈΠ½ΠΎΠ² Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, Π½Π°ΡΡΡΠΎΠΈΡΡ IoC ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈ ΡΠΎΠ±ΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΡΠΎΠΊΠ°Ρ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΈ Java-ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΡΠ»ΠΈ Π²Ρ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΊ XML-ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π»ΠΈΠ±ΠΎ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΠ΅ΡΠ΅Π· XML, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Spring Framework ΠΈΠ»ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ/ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° IoC ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°
ΠΠ°ΠΊ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ(Ρ) ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ @Bean Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ
Π’Π΅ΠΏΠ΅ΡΡ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΡΠΈΠΏΠΎΠΌ GreetingService Π±ΡΠ» Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ Π΅Π³ΠΎ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ΅ΡΠΎΠ΄ getBean() ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ(ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅), ΡΠ°ΠΊ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΡ Π±ΠΈΠ½Π°(ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ Π½ΠΈΠΆΠ΅), Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² production-ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ , Ρ.ΠΊ. Π΄Π»Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ΅Π»Π΅ΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Dependency Injection (DI), ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Spring IoC ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ DI Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ Π½ΠΈΠΆΠ΅ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π³Π»Π°Π²Π΅.
ΠΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π±ΠΈΠ½Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ΅Π»ΡΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Description :
ΠΠΈΠ·Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ» Π±ΠΈΠ½Π°
ΠΡΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π²ΡΡΠ΅, ΡΡΠΈΡΡΠ²Π°ΠΉΡΠ΅ ΠΈΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ². ΠΠ»Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
ΠΠ»Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ°Π·ΡΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° Π±ΠΈΠ½Π°, ΡΠΎ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΠΈΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π½ΠΈΠΆΠ΅:
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Ρ Π²Π°Ρ ΠΏΠΎΡΠ²ΡΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΡΠΈ ΡΠ°Π·ΡΡΡΠ΅Π½ΠΈΠΈ Π±ΠΈΠ½Π°. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎΠΈΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ Π΅ΡΡ ΡΠ°Π·, ΡΡΠΎ ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π΅ ΠΎΡΠ½ΠΎΡΡΡΠΈΠΌΡΡ ΠΊ web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ(ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π»Ρ Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠΈΠΏ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π² Π½ΠΈΡ ΡΠΆΠ΅ Π΅ΡΡΡ).
ΠΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ(scopes) Π±ΠΈΠ½ΠΎΠ²
ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ½ΠΎΠ², Π²Ρ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΡΠ΅ΡΠ΅ΠΏΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π±ΠΈΠ½. ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ½ΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅ΠΏΡΠΎΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΏΠΎ ΡΡΠΎΠΌΡ ΡΠ΅ΡΠ΅ΠΏΡΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ @Configuration Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ
ΠΠΎΠ΄Π° Π±ΠΈΠ½ ΠΈΠΌΠ΅Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π±ΠΈΠ½Π°, ΡΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π²ΡΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΠΊ Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π°:
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π², ΠΈΠΌΠ΅ΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π΄Π° Π±ΠΈΠ½ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ Π±ΠΈΠ½Π° Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π±ΠΈΠ½ΠΎΠ², ΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΡΠ°ΠΊΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΏΠΎΠ»Π΅ ΠΊΠ»Π°ΡΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Autowired (Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΈΡΠ°Π½ΠΎ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π³Π»Π°Π²Π΅):
ΠΡΠΈ ΡΡΠΎΠΌ LessonsConfiguration ΠΎΡΡΠ°Π΅ΡΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:
ΠΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
IoC ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π±ΠΈΠ½ΠΎΠ² Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅:
Spring ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π±ΠΈΠ½Π°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· autowiring(Π΄Π°Π»Π΅Π΅, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅). ΠΠ°Π½Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π² ApplicationContext ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°:
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ GreetingService Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Qualifier :
Spring ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ JSR-250 @Resource Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² setter-ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²:
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ JSR-330 Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ
Spring Framework ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ JSR-330 Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. ΠΡΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ Spring Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½ΠΈΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² pom.xml ΡΠ»Π΅Π΄ΡΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ:
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ JSR-330 ΠΈ Spring Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π΄Π»Ρ DI:
ΠΠ±ΡΠ°ΡΠ½Π°Ρ ΡΡΠΎΡΠΎΠ½Π° Spring
ΠΠ΅Π΄Π΅Π»Ρ Spring Π½Π° Π₯Π°Π±ΡΠ΅, ΡΡΠ΄Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ, ΠΎΡΠΊΡΡΡΠ°. Π₯ΠΎΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΏΠ°ΡΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΡ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΎΡΠ°ΠΌ ΡΡΠ°ΡΡΠΈ «ΠΠΎΡΠ΅ΠΌΡ Ρ Π½Π΅Π½Π°Π²ΠΈΠΆΡ Spring», ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΈΠ»ΡΠ½ΡΠΉ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΡΡΠ» Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ Π²ΡΠ·Π²Π°Π»Π° ΡΡΠ΄ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ Π΄ΠΈΡΠΊΡΡΡΠΈΠΉ, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ΅ΠΌ, ΠΊΡΠΎ ΠΎΡΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π» Π½Π° ΠΌΠΎΡ ΠΏΡΠΎΡΠ»ΡΡ ΡΡΠ°ΡΡΡ ΠΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ Π½Π° Spring Π² 2017. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ ΠΊ ΠΏΡΠΎΡΠ»ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΈ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΡΡΠ°.
Π ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΠΏΠΎΠ³ΡΡΠ·ΠΈΠΌΡΡ Π² ΠΏΡΡΠΈΠ½Ρ Spring ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, ΡΠ°Π·ΠΎΠ±Π»Π°ΡΠΈΠΌ Π΅Π³ΠΎ ΠΌΠ°Π³ΠΈΡ, ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ Π²Π΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΈΠ·Π½ΡΡΡΠΈ, ΠΈ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ, ΠΊΠ°ΠΊΡΡ-ΠΆΠ΅ Π·Π°Π΄Π°ΡΡ ΠΈ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ°Π΅Ρ Spring Boot.
Π ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΎΡΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ ΡΠΊΠ°Π·Π°Π»ΠΈ, ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Hello World-Π° Π½Π° Spring Π²ΡΠ΅ ΠΆΠ΅ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅Π½. Spring, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Spring Boot, Π΄Π°Π΅Ρ ΠΎΡΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎΡΡ ΠΈ Π²ΡΠ΅ΠΌΠΎΠ³ΡΡΠ΅ΡΡΠ²Π°, Π½ΠΎ Π½Π΅ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ² ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π²Π΅Π΄Π΅Ρ ΠΊ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠ΅ΠΊΡΡΠ΅ΠΉΡΠΎΠΌ ΠΏΠΎ Π»ΠΎΠ³Ρ. Π§ΡΠΎ ΠΆ, ΡΡΠΎΠ±Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡ ΠΎΡΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ, ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠΈ ΠΈ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²Π½ΡΡΡΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΈ ΠΎΡ ΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π°Ρ ΠΎΡΠ³ΠΎΡΠ°ΠΆΠΈΠ²Π°Π΅Ρ Boot. Π¦Π΅Π»Π΅Π²Π°Ρ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡ Π²ΡΠ΅ ΠΆΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, Π½ΠΎ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠΏΡΡΠΎΠΌ ΠΈ Π±Π°Π·ΠΎΠ²ΡΠΌΠΈ Π·Π½Π°Π½ΠΈΡΠΌΠΈ Java ΠΈ Spring. Π₯ΠΎΡΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ ΠΎΠΏΡΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Spring Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΎΡΠ²Π΅ΠΆΠΈΡΡ Π·Π½Π°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ
ΠΠ°ΡΠ½Π΅ΠΌ ΡΡΡΠ²Π°ΡΡ ΠΏΠΎΠΊΡΠΎΠ²Ρ Ρ ΡΠ°ΠΌΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΠΏΠΎΠ½ΡΡΠΈΠΉ Spring. ΠΠΈΠ½ (bean) β ΡΡΠΎ Π½Π΅ ΡΡΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΡΠ°ΠΌΡΠΉ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. Π Π°Π·Π½ΠΈΡΠ° Π»ΠΈΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π±ΠΈΠ½Π°ΠΌΠΈ ΠΏΡΠΈΠ½ΡΡΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Spring-ΠΎΠΌ ΠΈ ΠΆΠΈΠ²ΡΡ Π²Π½ΡΡΡΠΈ Π΅Π³ΠΎ DI-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΠΈΠ½ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ Π² Spring β ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ, ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, ΠΏΠΎ ΡΡΡΠΈ Π²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π°Π±ΠΎΡΠ° Π±ΠΈΠ½ΠΎΠ². ΠΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΌΠΎΠΊΠ°ΡΡ ΠΈ Ρ.ΠΏ.
DI ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ
ΠΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΈ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Spring. ΠΠ½Π΅ΡΠ½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ, Π½ΠΎ Π²Π½ΡΡΡΠΈ ΠΎΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π΄Π»Ρ ΡΠΎΠ½ΠΊΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠΎ ΡΡΡΠΈ, Π»ΡΠ±ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π‘ΠΏΡΠΈΠ½Π³ β ΡΡΠΎ Π½Π°Π±ΠΎΡ Π±ΠΈΠ½ΠΎΠ², ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ ΡΠ΅ΡΠ΅Π· DI ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ DI ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΠΊΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π½Π΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ°Ρ ΠΌΡΡΠ»Ρ, Π½ΠΎ Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π· Π²ΠΈΠ΄Π΅Π», ΡΡΠΎ ΠΈΠ·-Π·Π° ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΎΡΡΠΎΡΡ ΠΎΠ½Π° Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π΅ΡΠ»ΠΈ Ρ Π½Π΅Π³ΠΎ Π»ΠΈΡΡ ΠΎΠ΄Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ β ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ. Π’.Π΅. ΠΊΠ»Π°ΡΡΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ Π±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ DI. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ ΠΈΡ ΠΌΠΎΠΊΠ°ΡΡ Π² ΡΠ΅ΡΡΠ°Ρ , Ρ.ΠΊ. Mockito, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΏΠΎΠ»Π½Π΅ ΡΠΌΠ΅Π΅Ρ ΠΌΠΎΠΊΠ°ΡΡ ΠΊΠ»Π°ΡΡΡ.
ΠΠΎΠ½ΡΠ΅ΠΊΡΡ
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
ΠΡΠ°ΠΊ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β ΡΡΠΎ Π½Π°Π±ΠΎΡ Π±ΠΈΠ½ΠΎΠ², ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΎ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎΡ Π½Π°Π±ΠΎΡ ΠΎΠΏΠΈΡΠ°ΡΡ.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π±ΠΈΠ½ΠΎΠ². Spring Π΄Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ Π½Π°Π±ΠΎΡ Π±ΠΈΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎΡΠΌΠΈΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΡΡΠΎ ΡΠ΅ΡΠ΅Π· Π½Π°Π±ΠΎΡ xml ΡΠ°ΠΉΠ»ΠΎΠ². Π Π½Π°ΡΠΈ Π΄Π½ΠΈ Π΅ΠΌΡ Π½Π° ΡΠΌΠ΅Π½Ρ ΠΏΡΠΈΡΠ»ΠΈ Java Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. Spring Boot ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π½Π° Π°Π½Π½ΡΠ°ΡΠΈΡΡ ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅, ΡΠ΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡ ΡΠ΅ΡΠ΅Π· Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. Π ΡΡΠ΅ΡΡΠ΅ΠΌ ΡΠ²ΠΎΠ΅ΠΌ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΈ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π±ΠΈΠ½ΠΎΠ² ΠΏΡΠΈΡΠ»Π° ΠΊ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ (functional bean registration), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ°Π½Π΅Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π°ΠΆΠ½ΡΡ Π½ΠΎΠ²ΡΡ ΡΠΈΡ Π³ΠΎΡΠΎΠ²ΡΡΠ΅Π³ΠΎΡΡ ΠΊ Π²ΡΡ ΠΎΠ΄Ρ Spring 5.
Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ, Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊ:
ΠΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΄Π²Π° Π±ΠΈΠ½Π°, ΠΏΡΠΈΡΠ΅ΠΌ Π²ΡΠΎΡΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ. Π Π·Π΄Π΅ΡΡ Π² ΠΈΠ³ΡΡ Π²ΡΡΡΠΏΠΈΡ Spring β ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΠΎΡΠΈΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈΠ½ΡΡΠ°Π½Ρ PaymentProvider β Spring Π½Π°ΠΉΠ΄Π΅Ρ Π΅Π³ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡ Π½Π°ΠΌ.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ @Import Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ.
Π‘ΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
Π Π΅Π·ΡΠΌΠ΅
Spring Boot
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ. ΠΠΎΠΏΡΡΡΠΈΠΌ, Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ MySQL Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . ΠΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Spring Data JPA Ρ Hibernate Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°, Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΠ½ΠΎΠ² β EntityManagerFactory (ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠ»Π°ΡΡ JPA), DataSource Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊ Π±Π°Π·Π΅ ΡΠ΅ΡΠ΅Π· JDBC Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΠΈ Ρ.ΠΏ. ΠΠΎ Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΈ, ΠΏΠΎ ΡΡΡΠΈ, Π΄Π΅Π»Π°Π΅ΠΌ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ β ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ ΡΡΠΎ Π½Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ? Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠΊΠ°Π·Π°Π»ΠΈ ΡΡΡΠΎΠΊΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π½Π° MySQL Π΄ΡΠ°ΠΉΠ²Π΅Ρ β ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ ΡΠ΅ΠΌΡ-ΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ Π±ΠΈΠ½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ MySQL? ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ ΠΈ Π΄Π΅Π»Π°Π΅Ρ Spring Boot. ΠΠΎ ΡΡΡΠΈ, Spring Boot ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ Π±ΠΈΠ½Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅. Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠΊΠ°ΠΌΠΈ, ΠΏΡΠΎΡΡΠΎ Boot ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠ΅Ρ.
ΠΠ²ΡΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
ΠΠ°ΠΆΠ½ΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅ Spring Boot ΡΡΠΎ Π°Π²ΡΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π±ΠΈΠ½Ρ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠΎ Π±ΠΎΠ»ΡΡΠΎΠΌΡ ΡΡΠ΅ΡΡ, Π΄Π°ΠΆΠ΅ ΡΠ°ΠΌ Embedded Servlet Container β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π±ΠΈΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ! ΠΠ°ΡΠ° Π²Π°ΠΆΠ½ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΎΠ± Π°Π²ΡΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
Π£ΡΠ»ΠΎΠ²ΠΈΡ ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π±ΠΈΠ½ΠΎΠ²
ΠΠΎΠ³ΠΈΠΊΠ° ΠΏΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π±ΠΈΠ½ΠΎΠ² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π°Π±ΠΎΡΠΎΠΌ @ConditionalOn* Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ. ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎΠ±Ρ Π±ΠΈΠ½ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΡΡ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Π² classpath ( @ConditionalOnClass ), Π½Π°Π»ΠΈΡΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π±ΠΈΠ½Π° ( @ConditionalOnBean ), ΠΎΡΡΡΡΡΠ²ΠΈΠΈ Π±ΠΈΠ½Π° ( @ConditionalOnMissingBean ) ΠΈ Ρ.ΠΏ.
Spring Boot Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ½ΡΠΌ ΠΈ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
ΠΠΎΠ³ΡΡΠΆΠ΅Π½ΠΈΠ΅ Π² Hello World
Π’Π΅ΠΏΠ΅ΡΡ, ΠΈΠΌΠ΅Ρ Π² Π·Π°ΠΏΠ°ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π½Π°Π½ΠΈΡ, ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΡΡΠΎ ΠΆΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ°ΠΊ, Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΡΡΠΎ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ ΡΠ°Π³Π°ΠΌ.
ΠΠ»Π°ΡΡ DemoApplication
Π’.Π΅. Π½Π°Π»ΠΈΡΠΈΠ΅ @SpringBootApplication Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π°Π²ΡΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ°Π·Π½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ Spring (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌ ΡΠ΅ΡΡΠ°ΠΌ), ΡΡΠΎ ΡΡΠΎ Spring Boot ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
SpringApplication.run()
Π’ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ.ΠΊ. ΠΊΠ»Π°ΡΡ AnnotationConfigEmbeddedWebApplicationContext Π½Π°ΠΉΠ΄Π΅Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π±ΠΈΠ½ ΡΠΈΠΏΠ° EmbeddedServletContainerFactory ΠΈ ΡΠ΅ΡΠ΅Π· Π½Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²ΡΠ΅ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ DI ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΠΎ Π΅ΡΡΡ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΌΠΈΠΌ.
@EnableAutoConfiguration
ΠΡΠ° Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π°Π²ΡΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. Π Π·Π΄Π΅ΡΡ, ΠΏΠΎΠΆΠ°Π»ΡΠΉ, ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π² ΡΠ°Π·Π²Π΅Π½ΡΠ°Π½ΠΈΠΈ ΠΌΠ°Π³ΠΈΠΈ Spring. ΠΠΎΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΡΠ° Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ:
Π’.Π΅. ΡΡΠΎ ΡΠ°ΠΌΡΠΉ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΈΠΌΠΏΠΎΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΏΡΠΎ ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ Π²ΡΡΠ΅. ΠΠ»Π°ΡΡ ΠΆΠ΅ EnableAutoConfigurationImportSelector (ΠΈ Π΅Π³ΠΎ ΠΏΡΠ΅Π΅ΠΌΠ½ΠΈΠΊ Π² Spring Boot 1.5+ β AutoConfigurationImportSelector ) ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΠ½ΠΎΠ² Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΅ΡΡΡ ΠΎΠ΄Π½Π° ΡΠΎΠ½ΠΊΠΎΡΡΡ β ΠΎΠ½ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ Π±ΠΈΠ½Ρ ΡΠ°ΠΌ, Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΠ°Π±ΡΠΈΠΊΠΈ.
ΠΠ»Π°ΡΡ EnableAutoConfigurationImportSelector ΡΠΌΠΎΡΡΠΈΡ Π² ΡΠ°ΠΉΠ» spring.factories ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΎΡΡΡΠ΄Π° ΡΠΏΠΈΡΠΎΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² (Π°Π²ΡΠΎ)ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Spring Boot ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ.
Π’.Π΅. Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @EnableAutoConfiguration ΠΏΡΠΎΡΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π½ΡΠΆΠ½ΡΠ΅ Π±ΠΈΠ½Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎ ΡΡΡΠΈ, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° ΡΡΡΠ½ΠΎΠΉ ΠΈΠΌΠΏΠΎΡΡ Π½ΡΠΆΠ½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ:
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Spring Boot ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ (Π° ΠΈΡ ΠΎΠΊΠΎΠ»ΠΎ ΡΠΎΡΠ½ΠΈ). Π― Π΄ΡΠΌΠ°Ρ, Ρ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΡΠΆΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΏΠ°ΡΠ° Π²ΠΎΠΏΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎΠΈΡ ΠΏΡΠΎΡΡΠ½ΠΈΡΡ.
«ΠΠΎ ΡΡΠΎ ΠΆΠ΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ!». Π Π΄Π°, ΠΈ Π½Π΅Ρ β ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠΉ Π½Π΅Ρ ΡΠΎΡΠ½ΡΡ ΡΠΈΡΡ, Π½ΠΎ ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΏΡΠΎΡΠ΅ΡΡ Π°Π²ΡΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΡΠΉ (ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠΎΡΠ½ΠΈ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ Π½Π° Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Π² Π²Π°ΠΊΡΡΠΌΠ΅)
ΠΡΠ°ΡΠΊΠΎΠ΅ ΡΠ΅Π·ΡΠΌΠ΅
Π ΠΎΡΠ½ΠΎΠ²Π΅ «ΠΌΠ°Π³ΠΈΠΈ» Spring Boot Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΈΠ· Spring Framework. Π ΠΊΡΠ°ΡΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΏΡΠΎΡΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ:
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΠΏΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π»Π΅Π·Π°ΡΡ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΠΈ Π°Π²ΡΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡ Π½Π΅ ΠΈΠ΄Π΅Ρ ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ Π°Π²ΡΠΎ-ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ²ΠΎΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅.
ΠΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ°
Auto-configuration report
Π ΠΎΡΠ²Π΅Ρ Spring Π²ΡΠ΄Π°ΡΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠΉ Auto-configuration report:
Π‘ΡΡΠΎΡΠΊΠ° Π² Positive / Negative matches Π±ΡΠ΄Π΅Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ Π°Π²ΡΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Boot ΡΠΎΠΎΠ±ΡΠΈΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π±ΠΈΠ½ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ (Ρ.Π΅. ΡΠΊΠ°ΠΆΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π±ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ).
Actuator
Spring Boot Actuator ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΌΠ΅Π΅Ρ Π΄Π°Π²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ (Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π½Π°Π±ΠΎΡ ΡΡΠΈΡ ΠΌΠ΅ΡΡΠΈΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ°ΡΡΠΈΡΡΡΡ ΠΈΠ· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ).
Π Π΅Π·ΡΠΌΠ΅
Spring Π²ΡΠ΅ ΠΆΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΈ Π½Π΅ ΡΠ°ΠΌΡΠΌ ΠΏΡΠΎΡΡΡΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ, Π½ΠΎ ΡΡΠΎ ΡΠ΅Π½Π° Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ. Π Ρ ΠΎΡΡ Π·Π½Π°ΡΡ Π²ΡΠ΅ ΡΠΎΠ½ΠΊΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π² Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠ·Π½ΡΡΡΠΈ, Π²ΡΠ΅ ΠΆΠ΅, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠ° ΡΡΠ°ΡΡΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° ΠΏΠΎΠ½ΡΡΡ Π²Π°ΠΆΠ½ΠΎΡΡΡ ΠΈ ΡΠ΅Π½Π½ΠΎΡΡΡ Spring ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΠ±ΡΠ°Π»Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ «ΠΌΠ°Π³ΠΈΡΠ½ΠΎΡΡΠΈ» Π² ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠ΅ΠΌ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Spring Boot. ΠΠΎΠΉ ΡΠΎΠ²Π΅Ρ β Π½Π΅ Π±ΠΎΠΉΡΠ΅ΡΡ ΡΠ³Π»ΡΠ±Π»ΡΡΡΡΡ Π² Π½Π΅Π΄ΡΠ° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, ΡΠΈΡΠ°ΠΉΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, Π±Π»Π°Π³ΠΎ ΠΎΠ½ΠΈ Ρ Spring-a ΠΏΠΎΡΡΠΈ ΡΡΠ°Π»ΠΎΠ½Π½ΡΠ΅, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄.
Java Beans
Π― ΡΡΡ ΠΏΠΎΠ΄ΡΠΌΠ°Π» ΠΈ ΡΠ΅ΡΠΈΠ» ΡΡΡΡΠΎΠΈΡΡ ΡΠ΅Π±Π΅ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΡΡ Π»Π΅ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π±Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Π°. ΠΠΎΠΊΠ° ΡΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ, ΡΡ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΡΡ ΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ, ΠΈ Ρ Ρ ΠΎΡΡ ΡΠ΅Π±Ρ ΡΠ΅ΠΉΡΠ°Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠΌΠΈ ΠΏΠΎΠ½ΡΡΠΈΡΠΌΠΈ.
ΠΠ΅Ρ 10 Π½Π°Π·Π°Π΄ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ EJB β E nterprise J ava B eans.
β Π ΡΡΠΎ Π·Π½Π°ΡΠΈΡ Java Beans?
β Bean ΠΏΠΎ-Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ Π±ΠΎΠ±. Π Java Beans β ΡΡΠΎ, ΡΡΠ°Π»ΠΎ Π±ΡΡΡ, ΠΊΠΎΡΠ΅ΠΉΠ½ΡΠ΅ Π±ΠΎΠ±Ρ (Java β ΡΠΎΡΡ ΠΊΠΎΡΠ΅). Π’Π°ΠΊΠΎΠΉ Π°ΠΉΡΠΈΡΠ½ΡΠΉ ΡΠΌΠΎΡ.
ΠΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ»ΠΈ Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡΠ° Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² β Π±ΠΈΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠ΅Π»ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΡΠ΅Π±Ρ, Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π° ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΠΈ Π΅ΡΠ΅ ΠΊΡΡΡ Π²ΡΠ΅Π³ΠΎ. ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π»ΠΎΡΡ Π·Π° ΡΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΏΠ΅Ρ-Π½Π°Π²ΠΎΡΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Ρ ΠΎΡΡ Π±ΡΠ»ΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ. ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΎΡΠ΅Π½Ρ ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ.
Π’ΡΠΈ ΡΠ°ΠΌΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ Π²ΠΈΠ΄Π° EJB-Π±ΠΈΠ½ΠΎΠ²:
Entity Bean β Π±ΠΈΠ½, ΡΠ΅Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ β Ρ ΡΠ°Π½ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. Π Π»ΠΎΠ³ΠΈΠΊΡ ΡΠ°ΠΊΠΎΠ³ΠΎ Π±ΠΈΠ½Π° Π²ΡΡΡΠΎΠ΅Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅Π±Ρ ΠΈ ΡΠ²ΠΎΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . Π’Π°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½, Π° ΠΏΠΎΡΠΎΠΌ Π²ΠΎΡΡΠΎΠ·Π΄Π°Π½ ΠΈΠ· Π±Π°Π·Ρ Π·Π°Π½ΠΎΠ²ΠΎ. ΠΠΎ ΠΊΡΠΎΠΌΠ΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Ρ Π½Π΅Π³ΠΎ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ.
Session Bean β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ Π±ΠΈΠ½. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Session Bean Π΅ΡΡΡ ΡΠ²ΠΎΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ΄ΠΈΠ½ Π΄Π΅Π»Π°Π΅Ρ ΠΎΠ΄Π½ΠΎ, Π΄ΡΡΠ³ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠ΅. Π’Π°ΠΊΠΈΠ΅ Π±ΠΈΠ½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΈ Π±ΠΈΠ½Π°ΠΌΠΈ, Π° Π½Π΅ ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ.
Session Beans Π΄Π΅Π»ΡΡΡΡ Π½Π° Π΄Π²Π΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ.
Stateless Session Bean β ΡΡΠΎ Π±ΠΈΠ½, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ Ρ ΡΠ°Π½ΠΈΡ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π°ΠΆΠ½ΡΡ Π΄Π°Π½Π½ΡΡ , Π½ΡΠΆΠ½ΡΡ Π΄Π»Ρ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ. Π’Π°ΠΊΠΎΠΉ Π±ΠΈΠ½ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ½ΠΈΡΡΠΎΠΆΠΈΡΡ, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ, ΠΈ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ²ΠΎΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π½ΡΡΠ΅.
Statefull Session Bean β ΡΡΠΎ Π±ΠΈΠ½, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π½ΠΈΡ Ρ ΡΠ΅Π±Ρ Π²Π½ΡΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅. ΠΡΠ»ΠΈ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΠΎΠ³ΠΎ Π±ΠΈΠ½Π°, ΡΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Π΅ΠΌΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ . Π Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΡΡΠΎΡ Π±ΠΈΠ½ β ΡΡΠΎ Π½Π΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
ΠΠΎ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΠΈΠ½ΠΎΠ² ΡΠΎΠΆΠ΅ Π±ΡΠ»ΠΎ Π½Π΅ Π²ΡΠ΅ ΡΠ°ΠΊ ΡΠ°Π΄ΡΠΆΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΊΠΎΡΠΎ ΠΌΠ°ΡΡΠ½ΠΈΠΊ ΠΊΠ°ΡΠ½ΡΠ»ΡΡ Π² ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΡΠΎΡΠΎΠ½Ρ. Π ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠ°Π»ΠΈ Π²ΡΠ΅ ΡΠ°ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠΌ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.
POJO ( P lain O ld J ava O bject) β ΡΡΠ°ΡΡΠΉ ΠΎΠ±ΡΡΠ½ΡΠΉ Java-ΠΎΠ±ΡΠ΅ΠΊΡ. Π’Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π»ΠΈ ΠΊΠ°ΠΊΠΈΠΌΠΈ-ΡΠΎ ΡΡΠΏΠ΅ΡΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈ Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΈΡΡ ΠΎΡ ΡΡΠΏΠ΅ΡΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π‘Π°ΠΌΡΠ΅ ΠΎΠ±ΡΡΠ½ΡΠ΅ Java-ΠΎΠ±ΡΠ΅ΠΊΡΡ.
Π‘ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π² Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²/ΠΊΠ»Π°ΡΡΠΎΠ² Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β Π²ΡΠ΄Π΅Π»ΠΈΠ»ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ»ΠΈ, ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π½ΠΎΠ²ΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ.
DTO β Data Transfer Object β ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Ρ ΡΠ΅Π»ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΡΠΈ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ Π΄Π°Π½Π½ΡΡ . ΠΠ±ΡΡΠ½ΠΎ ΠΊ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Π΄Π²Π° ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ: Π°) ΡΠΌΠ΅ΡΡ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅, Π±) ΡΠΌΠ΅ΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡΡΡ. Π’.Π΅. ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΠΈ Π΄Π°Π½Π½ΡΡ .
Π‘ΠΎΠ·Π΄Π°Π» ΠΎΠ±ΡΠ΅ΠΊΡ, Π·Π°ΠΏΠΈΡΠ°Π» Π² Π½Π΅Π³ΠΎ Π½ΡΠΆΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ, ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π» Π² JSON/XML ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΠ» ΠΊΡΠ΄Π°-Π½Π°Π΄ΠΎ. ΠΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ β ΠΏΡΠΈΡΠ»ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ β Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π» Π΅Π³ΠΎ Π² DTO-ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ Π²ΡΡΡΠ³ΠΈΠ²Π°ΠΉ ΠΈΠ· Π½Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΠ΅.
Entity β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . ΠΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ. ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ β Π΄Π°Π½Π½ΡΠ΅ Π±ΠΈΠ·Π½Π΅Ρ-ΠΌΠΎΠ΄Π΅Π»ΠΈ.
ΠΡΡΡ Π΅ΡΠ΅ DAO β Data Access Object. ΠΠ°Π΄Π°ΡΠ° DAO β ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² Π±Π°Π·Ρ ΠΈ Π΄ΠΎΡΡΠ°Π²Π°ΡΡ ΠΈΡ ΠΈΠ· Π½Π΅Π΅. Entity ΡΠ°ΠΌ ΡΠ°ΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΠΎΠΉ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ β ΠΎΠ½ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½ΠΈΠΊΡΠ΄Π° ΡΠΎΡ ΡΠ°Π½ΡΡΡ.
ΠΡΡΡΡ ΡΡΠΎ ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π»Π΅ΠΊΡΠΈΡ, Π½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΡ ΡΠ΅ΠΉΡΠ°Ρ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ ΠΏΠΎΠΉΠΌΠ΅ΡΡ. ΠΠ°ΠΆΠ΄ΡΡ ΠΈΠ· ΡΡΠΈΡ ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π½ΡΠΌΠΈ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, Π° EJB β Π³ΠΎΠ΄Π°ΠΌΠΈ.
ΠΠΎ Ρ Ρ ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΡ Ρ ΠΎΡΡ Π±Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ», ΠΎ ΡΠ΅ΠΌ ΡΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ Π²Π΅ΡΠ°ΠΌΠΈ Π² ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠ΅, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠΊΠ΅, Π½Π° ΡΠΎΡΡΠΌΠ΅ ΠΈΠ»ΠΈ Π½Π° ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ.
β ΠΠΌ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΠΠΈΠ»Π°Π°Π±ΠΎ. ΠΠ°, Π΄ΡΠΌΠ°Ρ, ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ² ΠΌΠ½Π΅ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠ΅Π±Π΅ Π΅ΡΠ΅ ΡΠ°Π·.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊ Spring Professional Certification. ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, IoC, Π±ΠΈΠ½Ρ
ΠΠΎΠ±ΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΡΠΎΠΊ, Π₯Π°Π±Ρ.
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ ΡΠ΅ΡΠΈΠ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π²Π°ΠΌ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΠΈΠΊΠ»Π° ΡΡΠ°ΡΠ΅ΠΉ Π΄Π»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΊ Spring Professional Certification.
ΠΡΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΠ°ΡΡΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π·Π°ΠΉΠ΄Π΅Ρ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΠΈ, Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΡ Π²ΡΠΏΡΡΠΊ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ².
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ β ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΡΠ΅ΡΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ Spring ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ DI, Π²Π°Ρ ΠΊΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠΈΡΠ΅, ΠΏΡΠΎΡΠ΅, Π΅Π³ΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π»Π΅Π³ΡΠ΅ ΠΏΠΎΠ½ΡΡΡ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ.
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ DI, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡ Π½Π° ΡΠ°Π±ΡΠΈΠΊΡ ΠΈΠ»ΠΈ ΠΎΡΠ΄Π°Π΅ΡΡΡ ΡΡΠ΅ΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Π΅. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΈΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡ
ΡΠΎΠ·Π΄Π°Π½ΠΈΡ.
Π Spring Framework ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ org.springframework.factory.BeanFactory ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π±ΡΠΈΠΊΡ Π΄Π»Ρ Π±ΠΈΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ IoC ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ½Π°ΠΌΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΎ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ(java ΠΈΠ»ΠΈ xml).
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ org.springframework.context.ApplicationContext β ΡΡΠΎ ΠΎΠ±Π΅ΡΡΠΊΠ° Π½Π°Π΄ bean factory, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠ°Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ AOP, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ, i18n, ΠΈ Ρ.ΠΏ.
ΠΡΠ½ΠΎΠ²Π° Spring Framework β ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΈ Π½Π°ΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ «ΠΆΠΈΠ²ΡΡ» Π² ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΡ
ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΡ
ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ ΠΎΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄ΠΎ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ApplicationContext.
Spring ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°.
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ApplicationContext:
ΠΡΠΈΠΌΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°:
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ JUnit 5, ΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ 2 Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ:
ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎ Π΅ΡΡΡ 2 ΡΠΏΠΎΡΠΎΠ±Π°:
Π Spring Boot ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ:
ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° DataSource. ΠΠΎΠ·Π΄Π½Π΅Π΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ .
Component scanning(ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²) β Spring Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ Π±ΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅. ΠΡΠΎ Π±ΠΈΠ½Ρ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ-ΡΡΠ΅ΡΠ΅ΠΎΡΠΈΠΏΠ°ΠΌΠΈ.
Component | ΠΠΎΡΠ½Π΅Π²Π°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΠ»Π°ΡΡ ΠΊΠ°ΠΊ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ Π΄Π»Ρ Π°Π²ΡΠΎΠ²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ |
Controller | Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π½Π° ΡΡΠΎΠ½Ρ. |
@RestController | Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ Π΄Π»Ρ REST. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Controller ΠΈ @ResponseBody |
Service | Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ |
Repository | Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π΄ |
@Configuration | Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Java-ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ(@Bean-ΠΌΠ΅ΡΠΎΠ΄Ρ) |
ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ β scope, ΡΠΊΠΎΡΠΏ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ 2 ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Singleton | ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠ΅Π³ΠΎ 1 ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π±ΠΈΠ½Π° |
Prototype | Π ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² Π±ΠΈΠ½Π° |
Π 4 ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
Request | ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ β 1 HTTP Π·Π°ΠΏΡΠΎΡ. ΠΠ° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ Π±ΠΈΠ½ |
Session | ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ β 1 ΡΠ΅ΡΡΠΈΡ. ΠΠ° ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ΅ΡΡΠΈΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ Π±ΠΈΠ½ |
Application | ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ β ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ» ServletContext |
WebSocket | ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ β ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ» WebSocket |
ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ @Scope Π½Π° @Bean ΠΌΠ΅ΡΠΎΠ΄Π°Ρ .
Prototype Scope Π½Π΅ ΠΏΠΎΡΠΎΠΊΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ, Ρ.ΠΊ. ΠΎΠ½ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² 1 ΠΏΠΎΡΠΎΠΊΠ΅.
Singleton Scope ΠΆΠ΅ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ.
Singleton-Π±ΠΈΠ½Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΡΠ°Π·Ρ ΠΏΡΠΈ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ.
Prototype-Π±ΠΈΠ½Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΠΎΡΠ°.
Singleton bean ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅Π΄ΡΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ Π±ΠΈΠ½.
Prototype ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π±ΠΈΠ½Π°.
ΠΠ½Π΅Π΄ΡΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ singleton ΠΈΠ»ΠΈ prototype.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΠΉ BFPP. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΠΌΠ΅ΡΠ°ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΡΡΡ 3 Π²Π°ΡΠΈΠ°Π½ΡΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²:
ΠΠΈΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ ΡΠΈΠΏΡ DI, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ:
DI ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠ°ΠΌΡΠΌ Π»ΡΡΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, Ρ.ΠΊ. Π΄Π»Ρ Π½Π΅Π³ΠΎ Π½Π΅ Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² DI ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΡΠ΅Ρ.
DI ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ»Π΅ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Ρ.ΠΊ. Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΡ, ΡΠ½ΠΈΠΆΠ°ΡΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
DI ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌ. Π§ΡΠΎΠ±Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»Π΅Π½ΠΈΠ²ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π±ΠΈΠ½ΠΎΠ² ΠΈΠ»ΠΈ DI ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΡΠ΅Ρ.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ DI Ρ ΠΏΠΎΠΌΠΎΡΡΡ AutowiredAnnotationBeanPostProcessor. Π ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΈΠΌ, Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ BeanFactoryPP ΠΈΠ»ΠΈ BeanPP.
ΠΡΠ»ΠΈ Π²Π½Π΅Π΄ΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠ°ΡΡΠΈΠ², ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ, ΠΈΠ»ΠΈ map Ρ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠΌ, ΡΠΎ Spring Π²Π½Π΅Π΄ΡΠΈΡ Π²ΡΠ΅ Π±ΠΈΠ½Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΏΠΎ ΡΠΈΠΏΡ Π² ΡΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ²(ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ). Π ΡΠ»ΡΡΠ°Π΅ Ρ map ΠΊΠ»ΡΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΡ Π±ΠΈΠ½Π°.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ:
Spring ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Qualifier, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ DI.
ΠΡΠ»ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΠ½ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°(SomeClass), ΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π²Π½Π΅Π΄ΡΠΈΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎΡ Π±ΠΈΠ½, Π½Π°Π΄ @Bean-ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠΎΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΡΠ°Π²ΠΈΡΡ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΠΌΠ΅ΡΠΎΠ΄, Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΡ Π±ΠΈΠ½Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°.
ΠΠΌΡ Π±ΠΈΠ½Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Bean, Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎ ΠΈΠΌΡ ΡΠ°Π±ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°.
ΠΡΠΎΠΊΡΠΈ ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ°ΠΊ ΠΈ Π±ΠΈΠ½, Π½ΠΎ Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ.
ΠΠ²Π° Π²ΠΈΠ΄Π° ΠΏΡΠΎΠΊΡΠΈ:
ΠΡΠ»ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Π½Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π±ΠΈΠ½Π°, ΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ @Bean-ΠΌΠ΅ΡΠΎΠ΄. ΠΡΠ»ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π±ΠΈΠ½Π° Π΅ΡΡΡ, ΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π±ΠΈΠ½.
Π ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±ΡΠ΄Π΅Ρ Π²Π½Π΅Π΄ΡΠ΅Π½Π° ΡΡΡΠΎΠΊΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· property ΠΈΠ»ΠΈ ΠΈΠ· view.
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΏΡΠΎΡΡΠ±Π° ΠΏΡΠΈΡΡΠ»Π°ΡΡ ΠΏΡΠ°Π²ΠΊΠΈ ΠΈΠ»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² Π»ΠΈΡΠΊΡ.