ΠΊΠ°ΠΊ Π²Ρ ΡΠ΅ΡΠ°Π΅ΡΠ΅ ΠΊΠ°ΠΊΠΎΠΉ Π±ΠΈΠ½ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡΡ Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ Π±ΠΈΠ½ΠΎΠ²
Spring: Π²ΠΎΠΏΡΠΎΡΡ ΠΊ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Π΄Π°ΡΡ Π²Π°ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ°ΠΌΡΡ
Π²Π°ΠΆΠ½ΡΡ
ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ Spring, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡΡ ΠΊ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Component Scan, ΡΠΎ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ Spring
ΠΠ΄Π½Π°ΠΊΠΎ, Spring Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ ΠΎΠ± ΡΡΠΈΡ Π±ΠΈΠ½Π°Ρ , Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ Π·Π½Π°Π΅Ρ Π³Π΄Π΅ ΠΈΡΠΊΠ°ΡΡ ΠΈΡ . Π’ΠΎ, ΡΡΠΎ ΡΠΊΠ°ΠΆΠ΅Ρ Spring Π³Π΄Π΅ ΠΈΡΠΊΠ°ΡΡ ΡΡΠΈ Π±ΠΈΠ½Ρ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Component Scan. Π @ComponentScan Π²Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡΡΡ.
Spring Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ Π±ΠΈΠ½Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ Π΄Π»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ ΠΈ Π² ΠΈΡ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ .
@SpringBootApplication ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΊΠ»Π°ΡΡ Application
ΠΡΡ Π±ΡΠ΄Π΅Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ .
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π²Π°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @ComponentScan, Π³Π΄Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅ Π²ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π΄Π»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
@Component ΠΈ @ComponentScan ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠ΅Π»Π΅ΠΉ
@Component ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΠ»Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Spring Π±ΠΈΠ½Π°.
@ComponentScan ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π³Π΄Π΅ Spring ΠΈΡΠΊΠ°ΡΡ ΠΊΠ»Π°ΡΡΡ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Component ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΉ
Π ΠΊΠ»Π°ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Spring, @Bean ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Ρ ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ.
@Bean ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ Spring. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΠΈΠ½Π°.
ΠΡΠ΅ ΠΎΠ½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π±ΠΈΠ½Ρ Spring. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π²ΡΡ ΠΆΠ΅ Π΅ΡΡΡ ΡΠ°Π·Π½ΠΈΡΠ°.
@Component β ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
@Repository β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ, ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠΈΡΠΊΠ°. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
.
@Service β ΡΠ°ΡΠ°Π΄ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠΈ
ΠΡΠ»ΠΈ @Component ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΡΠ΅ΡΠ΅ΠΎΡΠΈΠΏΠΎΠΌ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Spring ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΡΠΎ @Service Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΎΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ, Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Spring ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ @Service Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠΈ. ΠΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π² Π±ΡΠ΄ΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΡΠ΅ΠΎΡΠΈΠΏΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°, ΠΈ Π΅Π³ΠΎ Π±ΠΈΠ½Ρ ΡΡΠ°Π½ΡΡ ΠΎΠ±Π»Π°Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ.
web.xml β ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ³ΠΎ Ρ Java EE. Java EE ΡΡΠ°Π½Π΄Π°ΡΡ Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
servlet.xml β ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΉ Π΄Π»Ρ Spring Framework.
ΠΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ Π±Π°Π·Π° Ρ ΠΎΡΠΎΡΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ @Service, @Component, @Autowired
ΠΠ΄Π½Π°ΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠΉ. Π― Π±Ρ ΠΎΡΡΠ°Π²ΠΈΠ» ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅.
@Autowired ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌΠΈ, ΡΠ΅ΡΡΠ΅ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π»ΡΠ±ΡΠΌ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. ΠΠΎΠ³Π΄Π° Spring Π½Π°Ρ ΠΎΠ΄ΠΈΡ @Autowired Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π΅, Spring Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π±ΠΈΠ½Π°. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π±ΡΠ΄ΡΡ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°Π½Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Spring.
Π‘ΠΊΠ²ΠΎΠ·Π½Π°Ρ Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ β ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π²Π°ΠΌ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΡΠΎΠ²Π½ΡΡ
β Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ Ρ.Π΄.
ΠΠΠ β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠ² ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
IOC β ΠΈΠ½Π²Π΅ΡΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΡΠ½ΠΎΠ³ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π·Π°Π±ΠΈΡΠ°Π΅Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΡΡΠΎ.
ApplicationContext β ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ IOC ΡΠΏΡΠΈΠ½Π³ΠΎΠΌ.
Bean Factory β ΡΡΠΎ Π±Π°Π·ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ IOC ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°
Application Context ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
classPathXmlApplicationContext β Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Spring ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ xml
annotationConfigApplicationContext β Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Spring ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° java
ΠΡΠ»ΠΈ Π²ΡΠ΅ Π±ΠΈΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ, ΠΌΡ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ @Qualifier
ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ ΡΡΠΎ Functional Web Framework, Kotlin ΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Web Container ΠΈ EJB Containers ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ/Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Tomcat, Websphere, Weblogic. ΠΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ²ΠΎΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΊ Π½ΠΈΠΌ. Java EE ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΡΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ².
Spring ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ Π½Π° java. Spring ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π½ΡΡΡΠΈ Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ejb ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π±Π΅Π· Π½ΠΈΡ .
Π’ΠΎΠ³Π΄Π° Π² application.properties Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ
application.greeting: real
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π°Π½Π½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ:
Spring 5.0 ΠΈ Spring Boot 2.0 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Java 8 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ.
@RestController = @Controller + @ResponseBody
@RestController ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Π² Spring-Π±ΠΈΠ½. ΠΡΠΎΡ Π±ΠΈΠ½ Π΄Π»Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ /ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Jackson message converter. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΅Π»Π΅Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² json ΠΈΠ»ΠΈ xml.
ResponseEntity Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ²Π΅Ρ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΊ Π½Π΅ΠΌΡ ΡΡΠ°ΡΡΡ ΠΎΡΠ²Π΅ΡΠ°. ΠΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ @ResponseBody.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ HTTP ΠΊΠΎΠ΄Ρ ΡΡΠ°ΡΡΡΠΎΠ² ΠΎΡΠ²Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
200 β SUCCESS
201 β CREATED
404 β RESOURCE NOT FOUND
400 β BAD REQUEST
401 β UNAUTHORIZED
500 β SERVER ERROR
ΠΠ»Ρ @ResponseBody Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΡΠ°ΡΡΡΠ° ΡΡΠΎ SUCCESS(200), Π΅ΡΠ»ΠΈ Π²ΡΡ ΠΎΠΊ ΠΈ SERVER ERROR(500), Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΠΎΠΏΡΡΡΠΈΠΌ ΠΌΡ ΡΡΠΎ-ΡΠΎ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΈ Ρ ΠΎΡΠΈΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠ°ΡΡΡ CREATED(201). Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ResponseEntity.
ΠΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎ Π²ΡΡ ΠΏΡΠΎΡΡΠΎ, ΡΠΈΠ»ΡΡΡΡ ΡΠ΅ΡΠ²Π»Π΅ΡΠΎΠ² ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ HTTPServlets. Listeners ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ. ΠΠ°ΠΊ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ Π½ΠΈ ΠΊ ΡΠ΅ΠΌ Π½Π΅ Π΄ΡΡΠ³ΠΈΠΌ?
Π€ΠΈΠ»ΡΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠΈΠΊΠΈ Π΄Π΅Π»Π°ΡΡ ΠΏΠΎ ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎΠΆΠ΅: ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΈ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π΄ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅.
Java EE ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅ΡΠΌΠΈΠ½ Filter, Spring Π½Π°Π·ΡΠ²Π°Π΅Ρ ΠΈΡ Interceptors.
ΠΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ AOP ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΏΠΎΠ»Π½ΡΡ ΡΠΈΠ»Ρ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ΅ΠΌΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π»ΡΠ±ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
Model β ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ModelMap Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ..
ModelAndView ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ Π΄Π»Ρ ΠΏΠ°ΡΡ, ΠΊΠ°ΠΊ ModelMap ΠΈ View.
ΠΠ±ΡΡΠ½ΠΎ Ρ Π»ΡΠ±Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ModelAndView. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ± ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π°Π΄Π°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ Π² ModelMap, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ View ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°.
ΠΠ΅ΡΠΎΠ΄ addAttribute ΠΎΡΠ΄Π΅Π»ΡΠ΅Ρ Π½Π°Ρ ΠΎΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ hashmap. ΠΠΎ ΡΡΡΠΈ addAttribute ΡΡΠΎ ΠΎΠ±Π΅ΡΡΠΊΠ° Π½Π°Π΄ put, Π³Π΄Π΅ Π΄Π΅Π»Π°Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° null. ΠΠ΅ΡΠΎΠ΄ addAttribute Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ put Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ modelmap.
model.addAttribute(βattribute1β,βvalue1β).addAttribute(βattribute2β,βvalue2β);
ΠΠ°ΠΌ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Ρ ΠΎΡΠΈΠΌ Π²Π·ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ HTML ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π³ΠΎ Π² ΠΠ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π‘ΠΏΡΠΈΠ½Π³Π°.
ΠΡΠ»ΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Spring MVC form tags, Spring Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²ΡΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π° HTML ΡΡΡΠ°Π½ΠΈΡΠ΅ Ρ ΠΠΈΠ½ΠΎΠΌ Π‘ΠΏΡΠΈΠ½Π³Π°.
ΠΡΠ»ΠΈ ΠΌΠ½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Ρ ΡΡΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ΄Ρ ΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Spring MVC Form Tags.
Hibernate Validator Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΠ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ.
Hibernate Validator Π²Π΅ΡΡΠΈΠΈ 5.x ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π»ΠΎΠ½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Bean Validation 1.1
Π’Π°ΠΊ ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Π·Π³Π»ΡΠ½ΡΡΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://beanvalidation.org/2.0, ΡΠΎ Hibernate Validator ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½.
Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ. Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Spring Boot ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ /static, ΠΈΠ»ΠΈ /public, ΠΈΠ»ΠΈ /resources, ΠΈΠ»ΠΈ /META-INF/resources
Π ΡΠ»ΡΡΠ°Π΅ GET Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ url, ΠΈ Π²ΡΠ΅ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΡ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΉΠ΄Π΅Ρ Π½Π°Ρ GET Π·Π°ΠΏΡΠΎΡ, ΡΠΌΠΎΠ³ΡΡ ΠΈΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ.
Π ΡΠ»ΡΡΠ°Π΅ POST Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΡΠ΅Π»Π° Π·Π°ΠΏΡΠΎΡΠ°. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ HTTPs, ΡΠ΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ° ΡΠΈΡΡΡΠ΅ΡΡΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ POST Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ
ΠΡΠΈΠΌΠ΅Ρ:
http://localhost:8080/login?name=Ranga&name=Ravi&name=Sathish
ΠΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΡΡΡ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°
Π₯ΠΎΡΡ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°ΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ Π°Π±ΡΠ° jd2050, Π·Π° ΠΏΠΎΠΌΠΎΡΡ Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠΌ.
Spring: Π²ΠΎΠΏΡΠΎΡΡ ΠΊ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Π΄Π°ΡΡ Π²Π°ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ°ΠΌΡΡ
Π²Π°ΠΆΠ½ΡΡ
ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ Spring, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡΡ ΠΊ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Component Scan, ΡΠΎ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ Spring
ΠΠ΄Π½Π°ΠΊΠΎ, Spring Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ ΠΎΠ± ΡΡΠΈΡ Π±ΠΈΠ½Π°Ρ , Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ Π·Π½Π°Π΅Ρ Π³Π΄Π΅ ΠΈΡΠΊΠ°ΡΡ ΠΈΡ . Π’ΠΎ, ΡΡΠΎ ΡΠΊΠ°ΠΆΠ΅Ρ Spring Π³Π΄Π΅ ΠΈΡΠΊΠ°ΡΡ ΡΡΠΈ Π±ΠΈΠ½Ρ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Component Scan. Π @ComponentScan Π²Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡΡΡ.
Spring Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ Π±ΠΈΠ½Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ Π΄Π»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ ΠΈ Π² ΠΈΡ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ .
@SpringBootApplication ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΊΠ»Π°ΡΡ Application
ΠΡΡ Π±ΡΠ΄Π΅Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ .
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π²Π°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @ComponentScan, Π³Π΄Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅ Π²ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π΄Π»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
@Component ΠΈ @ComponentScan ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠ΅Π»Π΅ΠΉ
@Component ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΠ»Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Spring Π±ΠΈΠ½Π°.
@ComponentScan ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π³Π΄Π΅ Spring ΠΈΡΠΊΠ°ΡΡ ΠΊΠ»Π°ΡΡΡ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Component ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΉ
Π ΠΊΠ»Π°ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Spring, @Bean ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Ρ ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ.
@Bean ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ Spring. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΠΈΠ½Π°.
ΠΡΠ΅ ΠΎΠ½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π±ΠΈΠ½Ρ Spring. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π²ΡΡ ΠΆΠ΅ Π΅ΡΡΡ ΡΠ°Π·Π½ΠΈΡΠ°.
@Component β ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
@Repository β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ, ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠΈΡΠΊΠ°. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
.
@Service β ΡΠ°ΡΠ°Π΄ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠΈ
ΠΡΠ»ΠΈ @Component ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΡΠ΅ΡΠ΅ΠΎΡΠΈΠΏΠΎΠΌ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Spring ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΡΠΎ @Service Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΎΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ, Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Spring ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ @Service Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠΈ. ΠΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π² Π±ΡΠ΄ΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΡΠ΅ΠΎΡΠΈΠΏΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°, ΠΈ Π΅Π³ΠΎ Π±ΠΈΠ½Ρ ΡΡΠ°Π½ΡΡ ΠΎΠ±Π»Π°Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ.
web.xml β ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ³ΠΎ Ρ Java EE. Java EE ΡΡΠ°Π½Π΄Π°ΡΡ Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
servlet.xml β ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΉ Π΄Π»Ρ Spring Framework.
ΠΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ Π±Π°Π·Π° Ρ ΠΎΡΠΎΡΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ @Service, @Component, @Autowired
ΠΠ΄Π½Π°ΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠΉ. Π― Π±Ρ ΠΎΡΡΠ°Π²ΠΈΠ» ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅.
@Autowired ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌΠΈ, ΡΠ΅ΡΡΠ΅ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π»ΡΠ±ΡΠΌ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. ΠΠΎΠ³Π΄Π° Spring Π½Π°Ρ ΠΎΠ΄ΠΈΡ @Autowired Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π΅, Spring Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π±ΠΈΠ½Π°. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π±ΡΠ΄ΡΡ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°Π½Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Spring.
Π‘ΠΊΠ²ΠΎΠ·Π½Π°Ρ Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ β ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π²Π°ΠΌ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΡΠΎΠ²Π½ΡΡ
β Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ Ρ.Π΄.
ΠΠΠ β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠ² ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
IOC β ΠΈΠ½Π²Π΅ΡΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΡΠ½ΠΎΠ³ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π·Π°Π±ΠΈΡΠ°Π΅Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΡΡΠΎ.
ApplicationContext β ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ IOC ΡΠΏΡΠΈΠ½Π³ΠΎΠΌ.
Bean Factory β ΡΡΠΎ Π±Π°Π·ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ IOC ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°
Application Context ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
classPathXmlApplicationContext β Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Spring ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ xml
annotationConfigApplicationContext β Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Spring ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° java
ΠΡΠ»ΠΈ Π²ΡΠ΅ Π±ΠΈΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ, ΠΌΡ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ @Qualifier
ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ ΡΡΠΎ Functional Web Framework, Kotlin ΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Web Container ΠΈ EJB Containers ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ/Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Tomcat, Websphere, Weblogic. ΠΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ²ΠΎΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΊ Π½ΠΈΠΌ. Java EE ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΡΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ².
Spring ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ Π½Π° java. Spring ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π½ΡΡΡΠΈ Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ejb ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π±Π΅Π· Π½ΠΈΡ .
Π’ΠΎΠ³Π΄Π° Π² application.properties Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ
application.greeting: real
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π°Π½Π½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ:
Spring 5.0 ΠΈ Spring Boot 2.0 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Java 8 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ.
@RestController = @Controller + @ResponseBody
@RestController ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Π² Spring-Π±ΠΈΠ½. ΠΡΠΎΡ Π±ΠΈΠ½ Π΄Π»Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ /ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Jackson message converter. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΅Π»Π΅Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² json ΠΈΠ»ΠΈ xml.
ResponseEntity Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ²Π΅Ρ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΊ Π½Π΅ΠΌΡ ΡΡΠ°ΡΡΡ ΠΎΡΠ²Π΅ΡΠ°. ΠΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ @ResponseBody.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ HTTP ΠΊΠΎΠ΄Ρ ΡΡΠ°ΡΡΡΠΎΠ² ΠΎΡΠ²Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
200 β SUCCESS
201 β CREATED
404 β RESOURCE NOT FOUND
400 β BAD REQUEST
401 β UNAUTHORIZED
500 β SERVER ERROR
ΠΠ»Ρ @ResponseBody Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΡΠ°ΡΡΡΠ° ΡΡΠΎ SUCCESS(200), Π΅ΡΠ»ΠΈ Π²ΡΡ ΠΎΠΊ ΠΈ SERVER ERROR(500), Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΠΎΠΏΡΡΡΠΈΠΌ ΠΌΡ ΡΡΠΎ-ΡΠΎ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΈ Ρ ΠΎΡΠΈΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠ°ΡΡΡ CREATED(201). Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ResponseEntity.
ΠΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎ Π²ΡΡ ΠΏΡΠΎΡΡΠΎ, ΡΠΈΠ»ΡΡΡΡ ΡΠ΅ΡΠ²Π»Π΅ΡΠΎΠ² ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ HTTPServlets. Listeners ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ. ΠΠ°ΠΊ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ Π½ΠΈ ΠΊ ΡΠ΅ΠΌ Π½Π΅ Π΄ΡΡΠ³ΠΈΠΌ?
Π€ΠΈΠ»ΡΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠΈΠΊΠΈ Π΄Π΅Π»Π°ΡΡ ΠΏΠΎ ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎΠΆΠ΅: ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΈ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π΄ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅.
Java EE ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅ΡΠΌΠΈΠ½ Filter, Spring Π½Π°Π·ΡΠ²Π°Π΅Ρ ΠΈΡ Interceptors.
ΠΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ AOP ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΏΠΎΠ»Π½ΡΡ ΡΠΈΠ»Ρ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ΅ΠΌΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π»ΡΠ±ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
Model β ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ModelMap Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ..
ModelAndView ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ Π΄Π»Ρ ΠΏΠ°ΡΡ, ΠΊΠ°ΠΊ ModelMap ΠΈ View.
ΠΠ±ΡΡΠ½ΠΎ Ρ Π»ΡΠ±Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ModelAndView. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ± ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π°Π΄Π°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ Π² ModelMap, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ View ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°.
ΠΠ΅ΡΠΎΠ΄ addAttribute ΠΎΡΠ΄Π΅Π»ΡΠ΅Ρ Π½Π°Ρ ΠΎΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ hashmap. ΠΠΎ ΡΡΡΠΈ addAttribute ΡΡΠΎ ΠΎΠ±Π΅ΡΡΠΊΠ° Π½Π°Π΄ put, Π³Π΄Π΅ Π΄Π΅Π»Π°Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° null. ΠΠ΅ΡΠΎΠ΄ addAttribute Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ put Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ modelmap.
model.addAttribute(βattribute1β,βvalue1β).addAttribute(βattribute2β,βvalue2β);
ΠΠ°ΠΌ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Ρ ΠΎΡΠΈΠΌ Π²Π·ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ HTML ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π³ΠΎ Π² ΠΠ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π‘ΠΏΡΠΈΠ½Π³Π°.
ΠΡΠ»ΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Spring MVC form tags, Spring Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²ΡΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π° HTML ΡΡΡΠ°Π½ΠΈΡΠ΅ Ρ ΠΠΈΠ½ΠΎΠΌ Π‘ΠΏΡΠΈΠ½Π³Π°.
ΠΡΠ»ΠΈ ΠΌΠ½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Ρ ΡΡΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ΄Ρ ΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Spring MVC Form Tags.
Hibernate Validator Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΠ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ.
Hibernate Validator Π²Π΅ΡΡΠΈΠΈ 5.x ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π»ΠΎΠ½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Bean Validation 1.1
Π’Π°ΠΊ ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Π·Π³Π»ΡΠ½ΡΡΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://beanvalidation.org/2.0, ΡΠΎ Hibernate Validator ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½.
Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ. Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Spring Boot ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ /static, ΠΈΠ»ΠΈ /public, ΠΈΠ»ΠΈ /resources, ΠΈΠ»ΠΈ /META-INF/resources
Π ΡΠ»ΡΡΠ°Π΅ GET Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ url, ΠΈ Π²ΡΠ΅ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΡ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΉΠ΄Π΅Ρ Π½Π°Ρ GET Π·Π°ΠΏΡΠΎΡ, ΡΠΌΠΎΠ³ΡΡ ΠΈΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ.
Π ΡΠ»ΡΡΠ°Π΅ POST Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΡΠ΅Π»Π° Π·Π°ΠΏΡΠΎΡΠ°. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ HTTPs, ΡΠ΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ° ΡΠΈΡΡΡΠ΅ΡΡΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ POST Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ
ΠΡΠΈΠΌΠ΅Ρ:
http://localhost:8080/login?name=Ranga&name=Ravi&name=Sathish
ΠΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΡΡΡ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°
Π₯ΠΎΡΡ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°ΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ Π°Π±ΡΠ° jd2050, Π·Π° ΠΏΠΎΠΌΠΎΡΡ Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠΌ.
Spring: Π²ΠΎΠΏΡΠΎΡΡ ΠΊ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Π΄Π°ΡΡ Π²Π°ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ°ΠΌΡΡ
Π²Π°ΠΆΠ½ΡΡ
ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ Spring, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡΡ ΠΊ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Component Scan, ΡΠΎ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ Spring
ΠΠ΄Π½Π°ΠΊΠΎ, Spring Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ ΠΎΠ± ΡΡΠΈΡ Π±ΠΈΠ½Π°Ρ , Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ Π·Π½Π°Π΅Ρ Π³Π΄Π΅ ΠΈΡΠΊΠ°ΡΡ ΠΈΡ . Π’ΠΎ, ΡΡΠΎ ΡΠΊΠ°ΠΆΠ΅Ρ Spring Π³Π΄Π΅ ΠΈΡΠΊΠ°ΡΡ ΡΡΠΈ Π±ΠΈΠ½Ρ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Component Scan. Π @ComponentScan Π²Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡΡΡ.
Spring Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ Π±ΠΈΠ½Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ Π΄Π»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ ΠΈ Π² ΠΈΡ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ .
@SpringBootApplication ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΊΠ»Π°ΡΡ Application
ΠΡΡ Π±ΡΠ΄Π΅Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ .
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π²Π°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @ComponentScan, Π³Π΄Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅ Π²ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π΄Π»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
@Component ΠΈ @ComponentScan ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠ΅Π»Π΅ΠΉ
@Component ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΠ»Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Spring Π±ΠΈΠ½Π°.
@ComponentScan ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π³Π΄Π΅ Spring ΠΈΡΠΊΠ°ΡΡ ΠΊΠ»Π°ΡΡΡ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Component ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΉ
Π ΠΊΠ»Π°ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Spring, @Bean ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Ρ ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ.
@Bean ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ Spring. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΠΈΠ½Π°.
ΠΡΠ΅ ΠΎΠ½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π±ΠΈΠ½Ρ Spring. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π²ΡΡ ΠΆΠ΅ Π΅ΡΡΡ ΡΠ°Π·Π½ΠΈΡΠ°.
@Component β ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
@Repository β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ, ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠΈΡΠΊΠ°. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
.
@Service β ΡΠ°ΡΠ°Π΄ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠΈ
ΠΡΠ»ΠΈ @Component ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΡΠ΅ΡΠ΅ΠΎΡΠΈΠΏΠΎΠΌ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Spring ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΡΠΎ @Service Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΎΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ, Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Spring ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ @Service Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠΈ. ΠΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π² Π±ΡΠ΄ΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΡΠ΅ΠΎΡΠΈΠΏΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°, ΠΈ Π΅Π³ΠΎ Π±ΠΈΠ½Ρ ΡΡΠ°Π½ΡΡ ΠΎΠ±Π»Π°Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ.
web.xml β ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ³ΠΎ Ρ Java EE. Java EE ΡΡΠ°Π½Π΄Π°ΡΡ Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
servlet.xml β ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΉ Π΄Π»Ρ Spring Framework.
ΠΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ Π±Π°Π·Π° Ρ ΠΎΡΠΎΡΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ @Service, @Component, @Autowired
ΠΠ΄Π½Π°ΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠΉ. Π― Π±Ρ ΠΎΡΡΠ°Π²ΠΈΠ» ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅.
@Autowired ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌΠΈ, ΡΠ΅ΡΡΠ΅ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π»ΡΠ±ΡΠΌ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. ΠΠΎΠ³Π΄Π° Spring Π½Π°Ρ ΠΎΠ΄ΠΈΡ @Autowired Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π΅, Spring Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π±ΠΈΠ½Π°. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π±ΡΠ΄ΡΡ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°Π½Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Spring.
Π‘ΠΊΠ²ΠΎΠ·Π½Π°Ρ Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ β ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π²Π°ΠΌ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΡΠΎΠ²Π½ΡΡ
β Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ Ρ.Π΄.
ΠΠΠ β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠ² ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
IOC β ΠΈΠ½Π²Π΅ΡΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΡΠ½ΠΎΠ³ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π·Π°Π±ΠΈΡΠ°Π΅Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΡΡΠΎ.
ApplicationContext β ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ IOC ΡΠΏΡΠΈΠ½Π³ΠΎΠΌ.
Bean Factory β ΡΡΠΎ Π±Π°Π·ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ IOC ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°
Application Context ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
classPathXmlApplicationContext β Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Spring ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ xml
annotationConfigApplicationContext β Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Spring ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° java
ΠΡΠ»ΠΈ Π²ΡΠ΅ Π±ΠΈΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ, ΠΌΡ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ @Qualifier
ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ ΡΡΠΎ Functional Web Framework, Kotlin ΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Web Container ΠΈ EJB Containers ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ/Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Tomcat, Websphere, Weblogic. ΠΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ²ΠΎΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΊ Π½ΠΈΠΌ. Java EE ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΡΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ².
Spring ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ Π½Π° java. Spring ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π½ΡΡΡΠΈ Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ejb ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π±Π΅Π· Π½ΠΈΡ .
Π’ΠΎΠ³Π΄Π° Π² application.properties Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ
application.greeting: real
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π°Π½Π½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ:
Spring 5.0 ΠΈ Spring Boot 2.0 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Java 8 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ.
@RestController = @Controller + @ResponseBody
@RestController ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Π² Spring-Π±ΠΈΠ½. ΠΡΠΎΡ Π±ΠΈΠ½ Π΄Π»Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ /ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Jackson message converter. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΅Π»Π΅Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² json ΠΈΠ»ΠΈ xml.
ResponseEntity Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ²Π΅Ρ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΊ Π½Π΅ΠΌΡ ΡΡΠ°ΡΡΡ ΠΎΡΠ²Π΅ΡΠ°. ΠΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ @ResponseBody.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ HTTP ΠΊΠΎΠ΄Ρ ΡΡΠ°ΡΡΡΠΎΠ² ΠΎΡΠ²Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
200 β SUCCESS
201 β CREATED
404 β RESOURCE NOT FOUND
400 β BAD REQUEST
401 β UNAUTHORIZED
500 β SERVER ERROR
ΠΠ»Ρ @ResponseBody Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΡΠ°ΡΡΡΠ° ΡΡΠΎ SUCCESS(200), Π΅ΡΠ»ΠΈ Π²ΡΡ ΠΎΠΊ ΠΈ SERVER ERROR(500), Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΠΎΠΏΡΡΡΠΈΠΌ ΠΌΡ ΡΡΠΎ-ΡΠΎ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΈ Ρ ΠΎΡΠΈΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠ°ΡΡΡ CREATED(201). Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ResponseEntity.
ΠΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎ Π²ΡΡ ΠΏΡΠΎΡΡΠΎ, ΡΠΈΠ»ΡΡΡΡ ΡΠ΅ΡΠ²Π»Π΅ΡΠΎΠ² ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ HTTPServlets. Listeners ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ. ΠΠ°ΠΊ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ Π½ΠΈ ΠΊ ΡΠ΅ΠΌ Π½Π΅ Π΄ΡΡΠ³ΠΈΠΌ?
Π€ΠΈΠ»ΡΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠΈΠΊΠΈ Π΄Π΅Π»Π°ΡΡ ΠΏΠΎ ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎΠΆΠ΅: ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΈ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π΄ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅.
Java EE ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅ΡΠΌΠΈΠ½ Filter, Spring Π½Π°Π·ΡΠ²Π°Π΅Ρ ΠΈΡ Interceptors.
ΠΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ AOP ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΏΠΎΠ»Π½ΡΡ ΡΠΈΠ»Ρ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ΅ΠΌΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π»ΡΠ±ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
Model β ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ModelMap Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ..
ModelAndView ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ Π΄Π»Ρ ΠΏΠ°ΡΡ, ΠΊΠ°ΠΊ ModelMap ΠΈ View.
ΠΠ±ΡΡΠ½ΠΎ Ρ Π»ΡΠ±Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ModelAndView. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ± ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π°Π΄Π°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ Π² ModelMap, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ View ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°.
ΠΠ΅ΡΠΎΠ΄ addAttribute ΠΎΡΠ΄Π΅Π»ΡΠ΅Ρ Π½Π°Ρ ΠΎΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ hashmap. ΠΠΎ ΡΡΡΠΈ addAttribute ΡΡΠΎ ΠΎΠ±Π΅ΡΡΠΊΠ° Π½Π°Π΄ put, Π³Π΄Π΅ Π΄Π΅Π»Π°Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° null. ΠΠ΅ΡΠΎΠ΄ addAttribute Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ put Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ modelmap.
model.addAttribute(βattribute1β,βvalue1β).addAttribute(βattribute2β,βvalue2β);
ΠΠ°ΠΌ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Ρ ΠΎΡΠΈΠΌ Π²Π·ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ HTML ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π³ΠΎ Π² ΠΠ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π‘ΠΏΡΠΈΠ½Π³Π°.
ΠΡΠ»ΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Spring MVC form tags, Spring Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²ΡΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π° HTML ΡΡΡΠ°Π½ΠΈΡΠ΅ Ρ ΠΠΈΠ½ΠΎΠΌ Π‘ΠΏΡΠΈΠ½Π³Π°.
ΠΡΠ»ΠΈ ΠΌΠ½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Ρ ΡΡΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ΄Ρ ΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Spring MVC Form Tags.
Hibernate Validator Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΠ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ.
Hibernate Validator Π²Π΅ΡΡΠΈΠΈ 5.x ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π»ΠΎΠ½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Bean Validation 1.1
Π’Π°ΠΊ ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Π·Π³Π»ΡΠ½ΡΡΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://beanvalidation.org/2.0, ΡΠΎ Hibernate Validator ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½.
Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ. Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Spring Boot ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ /static, ΠΈΠ»ΠΈ /public, ΠΈΠ»ΠΈ /resources, ΠΈΠ»ΠΈ /META-INF/resources
Π ΡΠ»ΡΡΠ°Π΅ GET Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ url, ΠΈ Π²ΡΠ΅ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΡ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΉΠ΄Π΅Ρ Π½Π°Ρ GET Π·Π°ΠΏΡΠΎΡ, ΡΠΌΠΎΠ³ΡΡ ΠΈΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ.
Π ΡΠ»ΡΡΠ°Π΅ POST Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΡΠ΅Π»Π° Π·Π°ΠΏΡΠΎΡΠ°. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ HTTPs, ΡΠ΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ° ΡΠΈΡΡΡΠ΅ΡΡΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ POST Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ
ΠΡΠΈΠΌΠ΅Ρ:
http://localhost:8080/login?name=Ranga&name=Ravi&name=Sathish
ΠΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΡΡΡ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°
Π₯ΠΎΡΡ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°ΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ Π°Π±ΡΠ° jd2050, Π·Π° ΠΏΠΎΠΌΠΎΡΡ Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠΌ.
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Spring Bean Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅
ΠΡΠ° ΡΡΠ°ΡΡΡ ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π±ΠΈΠ½ΠΎΠ² Π·Π° ΠΏΡΡΡ Π»Π΅Ρ ΡΡΠ°Π»Π° ΡΠ°ΠΌΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ Π² ΠΌΠΎΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅ (Π±ΠΎΠ»Π΅Π΅ 9300 ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ²). ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ Π΅Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ. Π’Π°ΠΊΠΆΠ΅ Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° Github.
Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ° Spring Bean Π½Π° Github
ΠΠ΄Π½Π°ΠΆΠ΄Ρ Π½Π° ΡΡΠ΅Π½ΠΈΠ½Π³Π΅ ΠΌΠ΅Π½Ρ ΡΠΏΡΠΎΡΠΈΠ»ΠΈ: «ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Spring Bean Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ». Π’Π°ΠΊ ΠΊΠ°ΠΊ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΅ΡΠ΅ Π½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Π±ΠΈΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ ΡΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ properties-ΡΠ°ΠΉΠ»Π°.
1. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ:
2. ΠΠ°Π»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΅Π΅ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ:
3. ΠΠ°ΠΏΠΈΡΠ΅ΠΌ Π°ΡΠΏΠ΅ΠΊΡ Ρ Pointcut ΠΈ Advise, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π½Π° ΡΠ°Π³Π΅ 2:
4. ΠΠΈΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΠΈΠ· @InjectDynamicObject. ΠΠΌΡ ΠΊΠ»Π°ΡΡΠ° Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π² properties-ΡΠ°ΠΉΠ»Π΅. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ Π½Π°ΠΏΠΈΡΠ°Π» Π΄Π²Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Customer: CustomerOneImpl ΠΈ CustomerTwoImpl:
ΠΠΎ Π΅ΡΡΡ Π΅ΡΠ΅, Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ, ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ. ΠΠ΅Π· Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² ΠΈ AspectJ, ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΡΡΠΉ Spring. ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π²ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² Map ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ· Π½Π΅Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. Π’Π°ΠΊ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ eXTra Client. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ PluginsLocatorManager. Spring Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡ Map Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π±ΠΈΠ½Π° (String) ΠΈ ΡΠ°ΠΌΠΈΠΌ Π±ΠΈΠ½ΠΎΠΌ.
«β¦ ΠΠ°ΠΆΠ΅ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Map ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π΅ΡΠ»ΠΈ ΡΠΈΠΏ ΠΊΠ»ΡΡΠ° String. Π Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ Map Π±ΡΠ΄ΡΡ Π²ΡΠ΅ Π±ΠΈΠ½Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π° Π² ΠΊΠ»ΡΡΠ°Ρ β ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° Π±ΠΈΠ½ΠΎΠ²».
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΠΊΡΡΡΠ΅ «Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° Spring Framework» ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ Π·Π΄Π΅ΡΡ.