ΠΊΠ°ΠΊ Π²Ρ‹ Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠΎΠΉ Π±ΠΈΠ½ ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ‚ΡŒ Ссли Ρƒ вас нСсколько подходящих Π±ΠΈΠ½ΠΎΠ²

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» ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ здСсь.

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

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

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