ΠΠ· Π΄ΠΆΡΠ½Π° Π² ΠΌΠΈΠ΄Π»Π° Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π₯ΠΎΠ»Π΄ΠΈΠ½Π³ΠΎΠΌ Π’1π ΠΡΠΈΠ³Π»Π°ΡΠ°Π΅ΠΌ java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π² ΠΡΠΊΡΡΡΡΠ΅ ΡΠΊΠΎΠ»Ρ Π’1!
π ΠΡΠΊΡΡΡΡΠ΅ ΡΠΊΠΎΠ»Ρ Π’1 β ΡΡΠΎ Π½ΠΎΠ²Π°Ρ ΠΊΠ°ΡΡΠ΅ΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄Π»Ρ IΠ’-ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ², ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΠ°Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΎΡΡΡΠ²Π° ΠΎΡ ΡΠ°Π±ΠΎΡΡ ΠΈ offer weeks.
π¨βπ» ΠΠ»Ρ ΡΡΠ°ΡΡΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΎΠΏΡΡ ΡΠ°Π±ΠΎΡΡ java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΎΡ 1 Π³ΠΎΠ΄Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π’1.
Π’1 Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 2 ΠΌΠ΅ΡΡΠΎ ΡΡΠ΅Π΄ΠΈ ΠΊΡΡΠΏΠ½Π΅ΠΉΡΠΈΡ ΠΠΠ’-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΠΏΠΎ Π²Π΅ΡΡΠΈΠΈ RAEX 2023 ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΡΡΠ½ΡΡΠΎΠΌ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π² ΡΡΠ΅ΡΠ΅ ΠΠ’.
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²Ρ ΠΎΠ΄ΠΈΡ: spring framework; docker; ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ΅ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, Π±ΡΠΎΠΊΠ΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ; ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ, SOLID
β° ΠΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ 1 ΠΌΠ΅ΡΡΡ.
π» Π€ΠΎΡΠΌΠ°Ρ: ΠΎΠ½Π»Π°ΠΉΠ½ ΠΏΠΎ Π²Π΅ΡΠ΅ΡΠ°ΠΌ (ΠΎΡ 8 ΡΠ°ΡΠΎΠ² Π² Π½Π΅Π΄Π΅Π»Ρ Π½Π° Π²Π΅Π±ΠΈΠ½Π°ΡΡ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΡ).
ΠΡΡΡΠΈΠΌ Π½Π°Π·Π½Π°ΡΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΎΡΡΠ΅Ρ!
π ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ β Π² ΠΊΠ°ΡΡΠΎΡΠΊΠ°Ρ Π²Π½ΡΡΡΠΈ ΠΏΠΎΡΡΠ°.
ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π·Π°ΡΠ²ΠΊΠΈ Π΄ΠΎ 22 Π°ΠΏΡΠ΅Π»Ρ! π
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ "Π’1". ΠΠΠ 7720484492.
π ΠΡΠΊΡΡΡΡΠ΅ ΡΠΊΠΎΠ»Ρ Π’1 β ΡΡΠΎ Π½ΠΎΠ²Π°Ρ ΠΊΠ°ΡΡΠ΅ΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄Π»Ρ IΠ’-ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ², ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΠ°Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΎΡΡΡΠ²Π° ΠΎΡ ΡΠ°Π±ΠΎΡΡ ΠΈ offer weeks.
π¨βπ» ΠΠ»Ρ ΡΡΠ°ΡΡΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΎΠΏΡΡ ΡΠ°Π±ΠΎΡΡ java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΎΡ 1 Π³ΠΎΠ΄Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π’1.
Π’1 Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 2 ΠΌΠ΅ΡΡΠΎ ΡΡΠ΅Π΄ΠΈ ΠΊΡΡΠΏΠ½Π΅ΠΉΡΠΈΡ ΠΠΠ’-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΠΏΠΎ Π²Π΅ΡΡΠΈΠΈ RAEX 2023 ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΡΡΠ½ΡΡΠΎΠΌ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π² ΡΡΠ΅ΡΠ΅ ΠΠ’.
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²Ρ ΠΎΠ΄ΠΈΡ: spring framework; docker; ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ΅ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, Π±ΡΠΎΠΊΠ΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ; ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ, SOLID
β° ΠΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ 1 ΠΌΠ΅ΡΡΡ.
π» Π€ΠΎΡΠΌΠ°Ρ: ΠΎΠ½Π»Π°ΠΉΠ½ ΠΏΠΎ Π²Π΅ΡΠ΅ΡΠ°ΠΌ (ΠΎΡ 8 ΡΠ°ΡΠΎΠ² Π² Π½Π΅Π΄Π΅Π»Ρ Π½Π° Π²Π΅Π±ΠΈΠ½Π°ΡΡ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΡ).
ΠΡΡΡΠΈΠΌ Π½Π°Π·Π½Π°ΡΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΎΡΡΠ΅Ρ!
π ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ β Π² ΠΊΠ°ΡΡΠΎΡΠΊΠ°Ρ Π²Π½ΡΡΡΠΈ ΠΏΠΎΡΡΠ°.
ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π·Π°ΡΠ²ΠΊΠΈ Π΄ΠΎ 22 Π°ΠΏΡΠ΅Π»Ρ! π
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ "Π’1". ΠΠΠ 7720484492.
π5π₯2π1
ΠΠΏΠΈΡΠΈΡΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ» Spring Bean
Beans β ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π·Π°Π±ΠΎΡΡ Spring Framework. ΠΠ° ΠΊΡΠ»ΠΈΡΠ°ΠΌΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Ρ Π½ΠΈΠΌΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΌΠ΅ΡΠ°ΡΡΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π² ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ°ΠΏΡ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°. Π§Π΅ΡΠ΅Π· ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ°ΠΏΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π²Π·ΡΡΡΠΉ Π±ΠΈΠ½:
1. ΠΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π½Π°ΡΠ°Π»ΠΎ ΠΆΠΈΠ·Π½ΠΈ Π±ΠΈΠ½Π°, ΡΠ°Π±ΠΎΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°;
2. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ²ΠΎΠΉΡΡΠ² ΠΈΠ· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π±ΠΈΠ½Π°, Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ;
3. ΠΠΎΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ aware-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². BeanNameAware, BeanFactoryAware ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΡ ΡΠΆΠ΅ ΠΏΠΈΡΠ°Π»ΠΈ ΠΎ ΡΠ°ΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°Ρ ΡΠ°Π½Π΅Π΅. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌΠΈ ΠΏΠΎΠ΄ΡΠΈΠΏΠ°ΠΌΠΈ BeanPostProcessor, ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠ°Π³ΠΎΠΌ 4;
4. ΠΡΠ΅-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ β ΠΌΠ΅ΡΠΎΠ΄ postProcessBeforeInitialization() ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° BeanPostProcessor;
5. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. Π Π°Π·Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅:
β’ ΠΠ΅ΡΠΎΠ΄ Π±ΠΈΠ½Π° Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @PostConstruct ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ° JSR-250 (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ ΡΠΏΠΎΡΠΎΠ±);
β’ ΠΠ΅ΡΠΎΠ΄ afterPropertiesSet() Π±ΠΈΠ½Π° ΠΏΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ InitializingBean;
β’ Init-ΠΌΠ΅ΡΠΎΠ΄. ΠΠ»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π±ΠΈΠ½Π° Π΅Π³ΠΎ ΠΈΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ initMethod. Π xml-ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π±ΠΈΠ½ΠΎΠ² ΡΡΠ°Π·Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ default-init-method;
6. ΠΠΎΡΡ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ β ΠΌΠ΅ΡΠΎΠ΄ postProcessAfterInitialization() ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° BeanPostProcessor.
ΠΠΎΠ³Π΄Π° IoC-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΠΏ ΡΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ Π±ΠΈΠ½Π°. ΠΠ°ΠΊ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² Java, ΠΏΡΠΈ ΠΆΠ΅ΡΡΠΊΠΎΠΌ Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ (kill -9) Π³Π°ΡΠ°Π½ΡΠΈΠΈ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠΎΠ³ΠΎ ΡΡΠ°ΠΏΠ° Π½Π΅Ρ. Π’ΡΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π° Β«Π΄Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΒ» Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΡΡΠΎ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠ΅ ΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ:
1. ΠΠ΅ΡΠΎΠ΄ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @PreDestroy;
2. ΠΠ΅ΡΠΎΠ΄ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ destroyMethod ΠΎΠΏΡΠ΅Π΄Π΅Π»Π½ΠΈΡ Π±ΠΈΠ½Π° (ΠΈΠ»ΠΈ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ default-destroy-method);
3. ΠΠ΅ΡΠΎΠ΄ destroy() ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° DisposableBean.
ΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΡΠ°ΡΡ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ» ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π±ΠΈΠ½Π° Ρ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ ΡΡΠ°ΠΏΠ°ΠΌΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΡΠ°Π±ΡΠΈΠΊ Π±ΠΈΠ½ΠΎΠ². Π Π½ΠΈΡ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π² Π±ΡΠ΄ΡΡΠΈΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΡ .
Beans β ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π·Π°Π±ΠΎΡΡ Spring Framework. ΠΠ° ΠΊΡΠ»ΠΈΡΠ°ΠΌΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Ρ Π½ΠΈΠΌΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΌΠ΅ΡΠ°ΡΡΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π² ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ°ΠΏΡ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°. Π§Π΅ΡΠ΅Π· ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ°ΠΏΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π²Π·ΡΡΡΠΉ Π±ΠΈΠ½:
1. ΠΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π½Π°ΡΠ°Π»ΠΎ ΠΆΠΈΠ·Π½ΠΈ Π±ΠΈΠ½Π°, ΡΠ°Π±ΠΎΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°;
2. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ²ΠΎΠΉΡΡΠ² ΠΈΠ· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π±ΠΈΠ½Π°, Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ;
3. ΠΠΎΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ aware-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². BeanNameAware, BeanFactoryAware ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΡ ΡΠΆΠ΅ ΠΏΠΈΡΠ°Π»ΠΈ ΠΎ ΡΠ°ΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°Ρ ΡΠ°Π½Π΅Π΅. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌΠΈ ΠΏΠΎΠ΄ΡΠΈΠΏΠ°ΠΌΠΈ BeanPostProcessor, ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠ°Π³ΠΎΠΌ 4;
4. ΠΡΠ΅-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ β ΠΌΠ΅ΡΠΎΠ΄ postProcessBeforeInitialization() ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° BeanPostProcessor;
5. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. Π Π°Π·Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅:
β’ ΠΠ΅ΡΠΎΠ΄ Π±ΠΈΠ½Π° Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @PostConstruct ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ° JSR-250 (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ ΡΠΏΠΎΡΠΎΠ±);
β’ ΠΠ΅ΡΠΎΠ΄ afterPropertiesSet() Π±ΠΈΠ½Π° ΠΏΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ InitializingBean;
β’ Init-ΠΌΠ΅ΡΠΎΠ΄. ΠΠ»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π±ΠΈΠ½Π° Π΅Π³ΠΎ ΠΈΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ initMethod. Π xml-ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π±ΠΈΠ½ΠΎΠ² ΡΡΠ°Π·Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ default-init-method;
6. ΠΠΎΡΡ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ β ΠΌΠ΅ΡΠΎΠ΄ postProcessAfterInitialization() ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° BeanPostProcessor.
ΠΠΎΠ³Π΄Π° IoC-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΠΏ ΡΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ Π±ΠΈΠ½Π°. ΠΠ°ΠΊ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² Java, ΠΏΡΠΈ ΠΆΠ΅ΡΡΠΊΠΎΠΌ Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ (kill -9) Π³Π°ΡΠ°Π½ΡΠΈΠΈ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠΎΠ³ΠΎ ΡΡΠ°ΠΏΠ° Π½Π΅Ρ. Π’ΡΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π° Β«Π΄Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΒ» Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΡΡΠΎ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠ΅ ΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ:
1. ΠΠ΅ΡΠΎΠ΄ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @PreDestroy;
2. ΠΠ΅ΡΠΎΠ΄ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ destroyMethod ΠΎΠΏΡΠ΅Π΄Π΅Π»Π½ΠΈΡ Π±ΠΈΠ½Π° (ΠΈΠ»ΠΈ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ default-destroy-method);
3. ΠΠ΅ΡΠΎΠ΄ destroy() ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° DisposableBean.
ΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΡΠ°ΡΡ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ» ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π±ΠΈΠ½Π° Ρ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ ΡΡΠ°ΠΏΠ°ΠΌΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΡΠ°Π±ΡΠΈΠΊ Π±ΠΈΠ½ΠΎΠ². Π Π½ΠΈΡ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π² Π±ΡΠ΄ΡΡΠΈΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΡ .
π19π₯4β€2
ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΡΠ²ΠΎΠ΅ ΠΏΠΎΡΡΡΠΎΠ»ΠΈΠΎ ΠΊΠ΅ΠΉΡ ΠΏΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΈ Π²ΡΠ΅Π³ΠΎ Π·Π° ΠΏΠ°ΡΡ ΡΠ°ΡΠΎΠ²
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΡΠΎΠΊΠ΅ Β«ΠΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉΒ».
ΠΠ° Π²Π΅Π±ΠΈΠ½Π°ΡΠ΅:
- ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ;
- ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠ°ΡΡΠ΅ΡΠ½Π° Saga, Π΄Π²ΡΡ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ° ΠΈ Π²ΡΠ±ΠΎΡ ΡΡΠΎΠ²Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ;
- ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²Π΅ΡΡ Π½Π΅ΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ.
ΠΠ°Π½ΡΡΠΈΠ΅ ΠΏΡΠΎΠΉΠ΄ΡΡ 24 Π°ΠΏΡΠ΅Π»Ρ Π² 20:00 ΠΌΡΠΊ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΡΡΡΠ° Β«Microservice ArchitectureΒ». ΠΠΎΡΡΡΠΏΠ½Π° ΡΠ°ΡΡΡΠΎΡΠΊΠ° Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅!
Π§ΡΠΎΠ±Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΡ ΠΎΡΠΊΡΡΡΡΠΉ ΡΡΠΎΠΊ, Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ: https://vk.cc/cwfziC
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΡΠΎΠΊΠ΅ Β«ΠΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉΒ».
ΠΠ° Π²Π΅Π±ΠΈΠ½Π°ΡΠ΅:
- ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ;
- ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠ°ΡΡΠ΅ΡΠ½Π° Saga, Π΄Π²ΡΡ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ° ΠΈ Π²ΡΠ±ΠΎΡ ΡΡΠΎΠ²Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ;
- ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²Π΅ΡΡ Π½Π΅ΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ.
ΠΠ°Π½ΡΡΠΈΠ΅ ΠΏΡΠΎΠΉΠ΄ΡΡ 24 Π°ΠΏΡΠ΅Π»Ρ Π² 20:00 ΠΌΡΠΊ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΡΡΡΠ° Β«Microservice ArchitectureΒ». ΠΠΎΡΡΡΠΏΠ½Π° ΡΠ°ΡΡΡΠΎΡΠΊΠ° Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅!
Π§ΡΠΎΠ±Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΡ ΠΎΡΠΊΡΡΡΡΠΉ ΡΡΠΎΠΊ, Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ: https://vk.cc/cwfziC
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576, www.otus.ruπ6π₯2
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ JavaEE ΡΠ΅ΡΠ²Π»Π΅Ρ Π² Spring Framework?
Web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Spring MVC ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΠ΅ΡΠ²Π»Π΅ΡΠ°Ρ : Π²ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π±Π΅ΡΠ΅Ρ Π½Π° ΡΠ΅Π±Ρ Π΅Π΄ΠΈΠ½ΡΠΉ DispatcherServlet. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ Front Controller.
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΎΡ Spring-ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΠ΅ΡΠ²Π»Π΅Ρ ΠΈΠ»ΠΈ ΡΠΈΠ»ΡΡΡ, Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ. ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ Π² Servlet API, Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΊΠ»Π°ΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ Π² web.xml ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²Π»Π΅Ρ, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ²Π»Π΅ΡΠ° ΠΌΠ°ΠΏΠΏΠΈΠ½Π³.
Π‘Π΅ΡΠ²Π»Π΅Ρ ΠΆΠΈΠ²Π΅Ρ Π²Π½Π΅ Spring-ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Π½ΡΠΌ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΊ Π½Π΅ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ autowiring, Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΠ²Π»Π΅ΡΠ° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ SpringBeanAutowiringSupport.processInjectionBasedOnServletContext, Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ΅ΡΠ²Π»Π΅ΡΠΎΠΌ ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°Ρ . Π ΡΡΠΎΠΌ ΠΆΠ΅ ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ Π΅ΡΡΡ ΡΡΠ΄ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΈΠ·Π²Π½Π΅.
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° Π½Π° Spring Boot, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±ΠΈΠ½Π° ΡΠΈΠΏΠ° ServletRegistrationBean ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ΅ΡΠ²Π»Π΅ΡΡ Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅. Π Π΄Π»Ρ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΊ ΠΊΠ»Π°ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ @ServletComponentScan. Π‘ ΡΡΠΎΠΉ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠΊΠ°Π½ΠΈΡΡΠ΅Ρ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΡΠ΅ web-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² ΡΡΠΈΠ»Π΅ Servlet 3.0: ΠΊΠ»Π°ΡΡΡ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ @WebFilter, @WebListener ΠΈ @WebServlet.
Web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Spring MVC ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΠ΅ΡΠ²Π»Π΅ΡΠ°Ρ : Π²ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π±Π΅ΡΠ΅Ρ Π½Π° ΡΠ΅Π±Ρ Π΅Π΄ΠΈΠ½ΡΠΉ DispatcherServlet. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ Front Controller.
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΎΡ Spring-ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΠ΅ΡΠ²Π»Π΅Ρ ΠΈΠ»ΠΈ ΡΠΈΠ»ΡΡΡ, Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ. ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ Π² Servlet API, Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΊΠ»Π°ΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ Π² web.xml ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²Π»Π΅Ρ, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ²Π»Π΅ΡΠ° ΠΌΠ°ΠΏΠΏΠΈΠ½Π³.
Π‘Π΅ΡΠ²Π»Π΅Ρ ΠΆΠΈΠ²Π΅Ρ Π²Π½Π΅ Spring-ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Π½ΡΠΌ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΊ Π½Π΅ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ autowiring, Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΠ²Π»Π΅ΡΠ° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ SpringBeanAutowiringSupport.processInjectionBasedOnServletContext, Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ΅ΡΠ²Π»Π΅ΡΠΎΠΌ ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°Ρ . Π ΡΡΠΎΠΌ ΠΆΠ΅ ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ Π΅ΡΡΡ ΡΡΠ΄ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΈΠ·Π²Π½Π΅.
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° Π½Π° Spring Boot, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±ΠΈΠ½Π° ΡΠΈΠΏΠ° ServletRegistrationBean ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ΅ΡΠ²Π»Π΅ΡΡ Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅. Π Π΄Π»Ρ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΊ ΠΊΠ»Π°ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ @ServletComponentScan. Π‘ ΡΡΠΎΠΉ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠΊΠ°Π½ΠΈΡΡΠ΅Ρ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΡΠ΅ web-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² ΡΡΠΈΠ»Π΅ Servlet 3.0: ΠΊΠ»Π°ΡΡΡ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ @WebFilter, @WebListener ΠΈ @WebServlet.
π₯10π6
This media is not supported in your browser
VIEW IN TELEGRAM
π₯ ΠΡΠΎΠΉΠ΄ΠΈ ΡΠ΅ΡΡ ΠΏΠΎ Java ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°Π½ΠΈΡ.
ΠΡΠ²Π΅ΡΠΈΡΡ β ΠΏΡΠΎΠΉΠ΄Π΅ΡΡ Π½Π° ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΉ ΠΊΡΡΡ Β«Java Developer. ProfessionalΒ» ΠΎΡ OTUS ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅Π½Π΅ + ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π°ΠΏΠΈΡΡΠΌ ΠΎΡΠΊΡΡΡΡΡ ΡΡΠΎΠΊΠΎΠ² ΠΊΡΡΡΠ° ΠΊΡΡΡΠ°
π ΠΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Π°Ρ, ΡΠ°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
π ΠΠ ΠΠΠ’Π Π’ΠΠ‘Π’: https://otus.pw/AxWa/?erid=LjN8KF9Af
ΠΡΠ²Π΅ΡΠΈΡΡ β ΠΏΡΠΎΠΉΠ΄Π΅ΡΡ Π½Π° ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΉ ΠΊΡΡΡ Β«Java Developer. ProfessionalΒ» ΠΎΡ OTUS ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅Π½Π΅ + ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π°ΠΏΠΈΡΡΠΌ ΠΎΡΠΊΡΡΡΡΡ ΡΡΠΎΠΊΠΎΠ² ΠΊΡΡΡΠ° ΠΊΡΡΡΠ°
π ΠΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Π°Ρ, ΡΠ°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
π ΠΠ ΠΠΠ’Π Π’ΠΠ‘Π’: https://otus.pw/AxWa/?erid=LjN8KF9Af
π5π₯2
Π ΡΡΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ Spring Boot?
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Spring Boot β ΡΡΠΎ ΡΡΠ°ΡΡΠ΅ΡΡ. ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌΠΈ Π²ΠΈΠ΄Π° spring-boot-starter-xxx Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄Π²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π·Π°Π΄Π°ΡΠΈ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½Π°Π±ΠΎΡ ΡΠΈΠΏΠΈΡΠ½ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ-Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ; Π²ΠΎ-Π²ΡΠΎΡΡΡ , ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ Π±ΠΈΠ½Ρ ΠΈ ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΎ Spring Boot Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΄ ΡΠ°ΠΊΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΠ΅ΠΉ, ΠΊΠ°ΠΊ embedded-ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±Π΅Π· web.xml, ΠΌΠ΅ΡΡΠΈΠΊΠΈ, properties Π²ΡΠ½Π΅ΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ· ΠΊΠΎΠ΄Π° Π²ΠΎ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, spring-boot-starter-data-jpa Π΄Π°ΡΡ Π²Π°ΠΌ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ Π²ΡΠ΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ JPA: Π΄ΡΠ°ΠΉΠ²Π΅Ρ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ Ρ Π½ΠΈΠΌ Π²Π΅ΡΡΠΈΡ Hibernate, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Persistence API ΠΈ Spring Data. Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ²ΡΡΡΡ Π²ΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ Π΄Π»Ρ JPA ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Π±ΠΈΠ½Ρ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Spring Boot ΡΡΠΊΠΎΡΡΠ΅Ρ ΠΈ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ, Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ boilerplate-ΠΊΠΎΠ΄Π° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° Π±ΠΈΠ·Π½Π΅Ρ-Π·Π°Π΄Π°ΡΠ°Ρ . ΠΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΠ°ΠΊΠ°Ρ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΡΡΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΠΆΠ΅Π»ΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Spring Boot β ΡΡΠΎ ΡΡΠ°ΡΡΠ΅ΡΡ. ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌΠΈ Π²ΠΈΠ΄Π° spring-boot-starter-xxx Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄Π²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π·Π°Π΄Π°ΡΠΈ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½Π°Π±ΠΎΡ ΡΠΈΠΏΠΈΡΠ½ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ-Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ; Π²ΠΎ-Π²ΡΠΎΡΡΡ , ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ Π±ΠΈΠ½Ρ ΠΈ ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΎ Spring Boot Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΄ ΡΠ°ΠΊΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΠ΅ΠΉ, ΠΊΠ°ΠΊ embedded-ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±Π΅Π· web.xml, ΠΌΠ΅ΡΡΠΈΠΊΠΈ, properties Π²ΡΠ½Π΅ΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ· ΠΊΠΎΠ΄Π° Π²ΠΎ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, spring-boot-starter-data-jpa Π΄Π°ΡΡ Π²Π°ΠΌ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ Π²ΡΠ΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ JPA: Π΄ΡΠ°ΠΉΠ²Π΅Ρ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ Ρ Π½ΠΈΠΌ Π²Π΅ΡΡΠΈΡ Hibernate, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Persistence API ΠΈ Spring Data. Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ²ΡΡΡΡ Π²ΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ Π΄Π»Ρ JPA ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Π±ΠΈΠ½Ρ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Spring Boot ΡΡΠΊΠΎΡΡΠ΅Ρ ΠΈ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ, Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ boilerplate-ΠΊΠΎΠ΄Π° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° Π±ΠΈΠ·Π½Π΅Ρ-Π·Π°Π΄Π°ΡΠ°Ρ . ΠΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΠ°ΠΊΠ°Ρ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΡΡΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΠΆΠ΅Π»ΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
π10π₯3β€2
π§ββοΈΠ§ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡΡ Π² Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅: ΠΌΠ°Π³ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°?
Π Π°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ Π½Π° ΠΊΡΡΡΠ΅ "Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° Spring Framework" ΠΎΡ OTUS.
π€£ ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π² ΡΠ²ΠΎΠΉ ΠΎΡΠ΄Π΅Π½ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΠΌΠ°Ρ
β‘οΈ ΠΡΠΎΠΉΠ΄ΠΈ ΡΠ΅ΡΡ ΠΏΠΎ Java ΠΎΡ OTUS ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡ, Π³ΠΎΡΠΎΠ² Π»ΠΈ ΡΡ ΠΊ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π½Π° Π½Π°ΡΠ΅ΠΌ ΠΊΡΡΡΠ΅?
ΠΡΠ²Π΅ΡΠΈΡΡ β ΠΏΡΠΎΠΉΠ΄Π΅ΡΡ Π½Π° ΠΊΡΡΡ ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅Π½Π΅.
π ΠΠ ΠΠΠ’Π Π’ΠΠ‘Π’: https://otus.pw/VI80/
π« ΠΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΡΠΈ Π² ΡΠ°ΡΡΡΠΎΡΠΊΡ
Π Π°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ Π½Π° ΠΊΡΡΡΠ΅ "Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° Spring Framework" ΠΎΡ OTUS.
ΠΡΠ²Π΅ΡΠΈΡΡ β ΠΏΡΠΎΠΉΠ΄Π΅ΡΡ Π½Π° ΠΊΡΡΡ ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅Π½Π΅.
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576, www.otus.ruPlease open Telegram to view this post
VIEW IN TELEGRAM
π5π₯2
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠ½ΡΠ΅ΠΊΡΠΈΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ° Π² ΡΠΈΠ½Π³Π»ΡΠΎΠ½?
Π Π°Π½ΡΡΠ΅ ΠΌΡ ΡΠΆΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΡΠΊΠΎΡΠΏΠΎΠ² singleton ΠΈ prototype Π² Spring Framework. ΠΠΎΠΏΡΡΡΠΈΠΌ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π² singleton-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²Π½Π΅Π΄ΡΡΠ΅ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΠΎ ΡΠΊΠΎΡΠΏΠΎΠΌ prototype β ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ?
ΠΡΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π±ΠΈΠ½Π° Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Scope(SCOPE_PROTOTYPE), ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ Π±ΠΈΠ½ Π² ΡΠΈΠ½Π³Π»ΡΠΎΠ½Π΅ ΡΠ΅ΡΠ΅Π· Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Autowired β Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΈΠ½Π³Π»ΡΠΎΠ½ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ, ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ ΡΠ»ΡΡΠΈΡΡΡ ΡΠΎΠΆΠ΅ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ ΠΏΡΠΈ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ (ΠΏΡΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ).
ΠΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ β ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ @Autowired, ΠΈ Π΄ΠΎΡΡΠ°Π²Π°ΡΡ Π΅Π³ΠΎ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π²ΡΡΡΠ½ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ context.getBean(MyPrototype.class).
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠ΅Π· Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° (ΠΏΠ°ΡΡΠ΅ΡΠ½ Β«ΠΠΎΠΌΠ°Π½Π΄Π°Β»). ΠΠ²ΡΠΎΠ²Π°ΠΉΡΠΈΡΡΡ Π½Π΅ ΡΠ°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠΈΠΉ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄.
ΠΠΎΠ»Π΅Π΅ ΠΊΡΠ°ΡΠΈΠ²ΡΠΉ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± β ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ½Π°. Π Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ @Scope ΠΊΡΠΎΠΌΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ scopeName Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ β proxyMode. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NO β ΠΏΡΠΎΠΊΡΠΈ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ. ΠΠΎ Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΡ INTERFACES ΠΈΠ»ΠΈ TARGET_CLASS, ΡΠΎ ΠΏΠΎΠ΄ @Autowired Π±ΡΠ΄Π΅Ρ Π²Π½Π΅Π΄ΡΡΡΡΡΡ Π½Π΅ ΡΠ°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ ΠΏΡΠΎΠΊΡΠΈ. Π ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΊΡΠΈΡΡΠ΅ΠΌΡΠΉ Π±ΠΈΠ½ ΠΈΠΌΠ΅Π΅Ρ ΡΠΊΠΎΡΠΏ prototype, ΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ Π²Π½ΡΡΡΠΈ ΠΏΡΠΎΠΊΡΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ.
Π Π°Π½ΡΡΠ΅ ΠΌΡ ΡΠΆΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΡΠΊΠΎΡΠΏΠΎΠ² singleton ΠΈ prototype Π² Spring Framework. ΠΠΎΠΏΡΡΡΠΈΠΌ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π² singleton-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²Π½Π΅Π΄ΡΡΠ΅ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΠΎ ΡΠΊΠΎΡΠΏΠΎΠΌ prototype β ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ?
ΠΡΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π±ΠΈΠ½Π° Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Scope(SCOPE_PROTOTYPE), ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ Π±ΠΈΠ½ Π² ΡΠΈΠ½Π³Π»ΡΠΎΠ½Π΅ ΡΠ΅ΡΠ΅Π· Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Autowired β Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΈΠ½Π³Π»ΡΠΎΠ½ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ, ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ ΡΠ»ΡΡΠΈΡΡΡ ΡΠΎΠΆΠ΅ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ ΠΏΡΠΈ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ (ΠΏΡΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ).
ΠΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ β ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ @Autowired, ΠΈ Π΄ΠΎΡΡΠ°Π²Π°ΡΡ Π΅Π³ΠΎ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π²ΡΡΡΠ½ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ context.getBean(MyPrototype.class).
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠ΅Π· Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° (ΠΏΠ°ΡΡΠ΅ΡΠ½ Β«ΠΠΎΠΌΠ°Π½Π΄Π°Β»). ΠΠ²ΡΠΎΠ²Π°ΠΉΡΠΈΡΡΡ Π½Π΅ ΡΠ°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠΈΠΉ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄.
ΠΠΎΠ»Π΅Π΅ ΠΊΡΠ°ΡΠΈΠ²ΡΠΉ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± β ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ½Π°. Π Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ @Scope ΠΊΡΠΎΠΌΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ scopeName Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ β proxyMode. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NO β ΠΏΡΠΎΠΊΡΠΈ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ. ΠΠΎ Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΡ INTERFACES ΠΈΠ»ΠΈ TARGET_CLASS, ΡΠΎ ΠΏΠΎΠ΄ @Autowired Π±ΡΠ΄Π΅Ρ Π²Π½Π΅Π΄ΡΡΡΡΡΡ Π½Π΅ ΡΠ°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ ΠΏΡΠΎΠΊΡΠΈ. Π ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΊΡΠΈΡΡΠ΅ΠΌΡΠΉ Π±ΠΈΠ½ ΠΈΠΌΠ΅Π΅Ρ ΡΠΊΠΎΡΠΏ prototype, ΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ Π²Π½ΡΡΡΠΈ ΠΏΡΠΎΠΊΡΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ.
π15π₯2
Π₯ΠΎΡΠΈΡΠ΅ ΠΎΡΠ²ΠΎΠΈΡΡ Scala? ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Web-ΡΠ΅ΡΠ²ΠΈΡΠ° Π½Π° ZIO: zio-http + zio + quill
ΠΡΠΈΡ ΠΎΠ΄ΠΈΡΠ΅ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΡΠΎΠΊ ΠΎΡ OTUS. Π‘ΠΏΠΈΠΊΠ΅Ρ ΠΠ»Π΅ΠΊΡΠ΅ΠΉ ΠΠΎΡΠΎΠ½Π΅Ρ β ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π² Β«NAUMENΒ».
ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡΠ° Ρ REST API ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ (ΠΏΡΡΠΈ, Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°, Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ) ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ ZIO.
ΠΠ°Π½ΡΡΠΈΠ΅ ΠΏΡΠΎΠΉΠ΄ΡΡ 22 Π°ΠΏΡΠ΅Π»Ρ Π² 20:00 ΠΌΡΠΊ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΡΡΡΠ° Β«Scala-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΒ». ΠΠΎΡΡΡΠΏΠ½Π° ΡΠ°ΡΡΡΠΎΡΠΊΠ° Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅!
Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΡΡΠΎΠΊ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π°ΠΏΠΈΡΡ: https://vk.cc/cwi4ET
ΠΡΠΈΡ ΠΎΠ΄ΠΈΡΠ΅ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΡΠΎΠΊ ΠΎΡ OTUS. Π‘ΠΏΠΈΠΊΠ΅Ρ ΠΠ»Π΅ΠΊΡΠ΅ΠΉ ΠΠΎΡΠΎΠ½Π΅Ρ β ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π² Β«NAUMENΒ».
ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡΠ° Ρ REST API ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ (ΠΏΡΡΠΈ, Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°, Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ) ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ ZIO.
ΠΠ°Π½ΡΡΠΈΠ΅ ΠΏΡΠΎΠΉΠ΄ΡΡ 22 Π°ΠΏΡΠ΅Π»Ρ Π² 20:00 ΠΌΡΠΊ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΡΡΡΠ° Β«Scala-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΒ». ΠΠΎΡΡΡΠΏΠ½Π° ΡΠ°ΡΡΡΠΎΡΠΊΠ° Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅!
Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΡΡΠΎΠΊ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π°ΠΏΠΈΡΡ: https://vk.cc/cwi4ET
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576, www.otus.ruπ4β€2π₯2
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° java.lang.Object
ΠΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΡΠ°ΡΡ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ β ΠΏΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠΉΡΠΈ Π² ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ Π΄Π°Π»Π΅ΠΊΠΎ Π²Π³Π»ΡΠ±Ρ. Π ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π²Π°ΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΡΠΈΠ³Π½Π°ΡΡΡΡ β Π½Π΅ Π·Π½Π°Ρ ΠΎΡΠ²Π΅ΡΠΎΠ² Π½Π° Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎ ΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΡΡ Π±Ρ ΡΠ°ΡΡΡΠΆΠ΄Π°ΡΡ ΠΎΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ ΠΎΡ Π½ΠΈΡ . Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΎΡΠΊΡΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊ ΠΈ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ javadoc-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. ΠΠΎΡΡΡΠΏΠΈΠΌ ΠΊΠ°ΠΊ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ, ΠΈ Π΄Π°Π»Π΅Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ. ΠΡ ΡΠΏΠΈΡΠΎΠΊ:
π
ΠΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΡΠ°ΡΡ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ β ΠΏΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠΉΡΠΈ Π² ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ Π΄Π°Π»Π΅ΠΊΠΎ Π²Π³Π»ΡΠ±Ρ. Π ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π²Π°ΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΡΠΈΠ³Π½Π°ΡΡΡΡ β Π½Π΅ Π·Π½Π°Ρ ΠΎΡΠ²Π΅ΡΠΎΠ² Π½Π° Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎ ΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΡΡ Π±Ρ ΡΠ°ΡΡΡΠΆΠ΄Π°ΡΡ ΠΎΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ ΠΎΡ Π½ΠΈΡ . Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΎΡΠΊΡΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊ ΠΈ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ javadoc-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. ΠΠΎΡΡΡΠΏΠΈΠΌ ΠΊΠ°ΠΊ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ, ΠΈ Π΄Π°Π»Π΅Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ. ΠΡ ΡΠΏΠΈΡΠΎΠΊ:
π
public final native Class<?> getClass()
π public native int hashCode()
π public boolean equals(Object obj)
π protected native Object clone() throws CloneNotSupportedException
π public String toString()
π public final native void notify()
π public final native void notifyAll()
π public final native void wait(long timeout) throws InterruptedException
π public final void wait(long timeout, int nanos) throws InterruptedException
π public final void wait() throws InterruptedException
π protected void finalize() throws Throwableπ13π₯3β€1
β
Π§ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Greenplum?
Π Π°Π·Π±Π΅ΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ»ΠΊΠΈ, ΠΈΡΡΠΎΡΠΈΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΠΎΠΌΡ ΠΊΡΡΡΡ Β«ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ Β» ΠΎΡ OTUS.
πΉΠΠ° Π²Π΅Π±ΠΈΠ½Π°ΡΠ΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Greenplum. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Greenplum ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ.
πΉΠΠ° ΡΡΠΎΠΊΠ΅ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ: ΠΏΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ \ Π²ΡΠ³ΡΡΠ·ΠΊΠ΅; Update \ deletes Π² ΡΠ°Π±Π»ΠΈΡΠ°Ρ GP; Append-Optimized ΡΠ°Π±Π»ΠΈΡΡ
π Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ
https://clck.ru/3AABc9?erid=LjN8KP99a
Π Π°Π·Π±Π΅ΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ»ΠΊΠΈ, ΠΈΡΡΠΎΡΠΈΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΠΎΠΌΡ ΠΊΡΡΡΡ Β«ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ Β» ΠΎΡ OTUS.
πΉΠΠ° Π²Π΅Π±ΠΈΠ½Π°ΡΠ΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Greenplum. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Greenplum ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ.
πΉΠΠ° ΡΡΠΎΠΊΠ΅ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ: ΠΏΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ \ Π²ΡΠ³ΡΡΠ·ΠΊΠ΅; Update \ deletes Π² ΡΠ°Π±Π»ΠΈΡΠ°Ρ GP; Append-Optimized ΡΠ°Π±Π»ΠΈΡΡ
π Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ
https://clck.ru/3AABc9?erid=LjN8KP99a
π5β€2π₯2
toString
Π‘ΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ "ΠΠΎΠ»Π½ΠΎΠ΅ΠΠΌΡΠΠ»Π°ΡΡΠ°@Ρ ΡΡΠ16ΡΠΈΡΠΈΡΠ½ΠΎΠΌΠΠΈΠ΄Π΅" (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ "java.lang.Object@1a23b4f"). Π§Π°ΡΡΡ ΠΏΠΎΡΠ»Π΅ @ β Π½Π΅ Π°Π΄ΡΠ΅Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°ΠΊ ΡΡΠΎ ΡΠΌΠΎΠ»ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΡΠΈ Π½Π΅ Π½Π΅ΡΠ΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠΎΠ»ΡΠ·Ρ. ΠΠΎΠ»Π΅Π·Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π½Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ β ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π² ΠΎΡΠ»Π°Π΄ΠΊΠ΅. ΠΠΎΡΠΎΠ²ΡΠΉ Π²ΡΠ·ΠΎΠ² x.toString() Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ Π½Π° null ΡΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² String.valueOf(x).
Π‘ΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ "ΠΠΎΠ»Π½ΠΎΠ΅ΠΠΌΡΠΠ»Π°ΡΡΠ°@Ρ ΡΡΠ16ΡΠΈΡΠΈΡΠ½ΠΎΠΌΠΠΈΠ΄Π΅" (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ "java.lang.Object@1a23b4f"). Π§Π°ΡΡΡ ΠΏΠΎΡΠ»Π΅ @ β Π½Π΅ Π°Π΄ΡΠ΅Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°ΠΊ ΡΡΠΎ ΡΠΌΠΎΠ»ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΡΠΈ Π½Π΅ Π½Π΅ΡΠ΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠΎΠ»ΡΠ·Ρ. ΠΠΎΠ»Π΅Π·Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π½Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ β ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π² ΠΎΡΠ»Π°Π΄ΠΊΠ΅. ΠΠΎΡΠΎΠ²ΡΠΉ Π²ΡΠ·ΠΎΠ² x.toString() Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ Π½Π° null ΡΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² String.valueOf(x).
π13π₯4
ΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ ΠΊ Π½Π°ΡΠ΅ΠΌΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΌΡ ΠΊΡΡΡΡ ΠΈ Π½Π°ΡΠ½ΠΈΡΠ΅ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΠ΅ Π² ΠΌΠΈΡ Java!
ΠΠ·ΡΡΠ°ΠΉΡΠ΅ ΠΎΡΠ½ΠΎΠ²Ρ, ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°Π·Π±ΠΈΡΠ°ΠΉΡΠ΅ΡΡ Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅. ΠΡΠ°ΠΊΡΠΈΠΊΠ°, ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΎΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΎΡΠ²ΠΎΠΈΡΡ Π½Π°Π²ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
π Π§Π΅ΠΌΡ Π²Ρ Π½Π°ΡΡΠΈΡΠ΅ΡΡ:
β Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠ°.
β Π Π°Π·Π΄Π΅Π»ΡΡΡ ΠΊΠΎΠ΄ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
β ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ°ΡΠΈ.
πΌ ΠΠΊΠ»ΡΡΠ΅Π½ΠΎ Π² ΠΊΡΡΡ:
29 ΡΡΠΎΠΊΠΎΠ² (Π²ΠΈΠ΄Π΅ΠΎ ΠΈ/ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡ), 35 ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΉ Π² ΡΡΠ΅Π½Π°ΠΆΠ΅ΡΠ΅, 95 ΠΏΡΠΎΠ²Π΅ΡΠΎΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ² + Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ.
ΠΡ Ρ Π½Π°ΠΌΠΈ?π
ΠΠ·ΡΡΠ°ΠΉΡΠ΅ ΠΎΡΠ½ΠΎΠ²Ρ, ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°Π·Π±ΠΈΡΠ°ΠΉΡΠ΅ΡΡ Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅. ΠΡΠ°ΠΊΡΠΈΠΊΠ°, ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΎΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΎΡΠ²ΠΎΠΈΡΡ Π½Π°Π²ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
π Π§Π΅ΠΌΡ Π²Ρ Π½Π°ΡΡΠΈΡΠ΅ΡΡ:
β Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠ°.
β Π Π°Π·Π΄Π΅Π»ΡΡΡ ΠΊΠΎΠ΄ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
β ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ°ΡΠΈ.
πΌ ΠΠΊΠ»ΡΡΠ΅Π½ΠΎ Π² ΠΊΡΡΡ:
29 ΡΡΠΎΠΊΠΎΠ² (Π²ΠΈΠ΄Π΅ΠΎ ΠΈ/ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡ), 35 ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΉ Π² ΡΡΠ΅Π½Π°ΠΆΠ΅ΡΠ΅, 95 ΠΏΡΠΎΠ²Π΅ΡΠΎΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ² + Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ.
ΠΡ Ρ Π½Π°ΠΌΠΈ?π
π8π₯2
new String("Hello_42") == "Hello_" + 42?
Π’Π°ΠΊΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΈ ΡΠΈΡΠ»ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π·Π½Π°Π½ΠΈΡ ΠΎ ΠΏΠΎΠ½ΡΡΠΈΠΈ ΠΏΡΠ»ΠΎΠ² Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² (literal pool). ΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΡΠ°ΡΡ Ρ ΠΏΡΠ»ΠΎΠΌ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΊΠ»Π°ΡΡΠ°. ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ Π»ΠΈΡΠ΅ΡΠ°Π»Π° ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΊΠ»Π°ΡΡΠ°, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΠΆΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ Π² ΠΊΡΡΠ΅. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ "Hello" == "Hello" ΠΈΡΡΠΈΠ½Π½ΠΎ, Π½Π΅ ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ String β ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ ΡΠΈΠΏ. Π’Π°ΠΊΠ°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡΠΈ (immutable) ΠΊΠ»Π°ΡΡΠ° String, ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ.
ΠΡΠΎΠΌΠ΅ ΡΠ°ΠΌΠΈΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ², ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ. Π ΡΠ°ΠΊΠΈΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° 42 ΠΊ ΡΡΡΠΎΠΊΠ΅ ΠΈ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΈΡΡΠΈΠ½Π½ΡΠΌ "Hello_42" == "Hello_" + 42.
ΠΡΠ» Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ new. ΠΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ new String("Hello_42") == "Hello_" + 42 Π»ΠΎΠΆΠ½ΠΎ.
Π’Π°ΠΊΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΈ ΡΠΈΡΠ»ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π·Π½Π°Π½ΠΈΡ ΠΎ ΠΏΠΎΠ½ΡΡΠΈΠΈ ΠΏΡΠ»ΠΎΠ² Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² (literal pool). ΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΡΠ°ΡΡ Ρ ΠΏΡΠ»ΠΎΠΌ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΊΠ»Π°ΡΡΠ°. ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ Π»ΠΈΡΠ΅ΡΠ°Π»Π° ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΊΠ»Π°ΡΡΠ°, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΠΆΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ Π² ΠΊΡΡΠ΅. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ "Hello" == "Hello" ΠΈΡΡΠΈΠ½Π½ΠΎ, Π½Π΅ ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ String β ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ ΡΠΈΠΏ. Π’Π°ΠΊΠ°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡΠΈ (immutable) ΠΊΠ»Π°ΡΡΠ° String, ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ.
ΠΡΠΎΠΌΠ΅ ΡΠ°ΠΌΠΈΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ², ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ. Π ΡΠ°ΠΊΠΈΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° 42 ΠΊ ΡΡΡΠΎΠΊΠ΅ ΠΈ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΈΡΡΠΈΠ½Π½ΡΠΌ "Hello_42" == "Hello_" + 42.
ΠΡΠ» Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ new. ΠΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ new String("Hello_42") == "Hello_" + 42 Π»ΠΎΠΆΠ½ΠΎ.
π25π₯4
ΠΠΎΠ²ΠΎΡΠΈΠ±ΠΈΡΡΠΊ, 25 Π°ΠΏΡΠ΅Π»Ρ ΠΏΡΠΈΠ³Π»Π°ΡΠ°Π΅ΠΌ Π½Π° ΠΌΠΈΡΠ°ΠΏ IT Talk by Sber Π΄Π»Ρ Java- ΠΈ DevOps-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²! π€©
ΠΡ ΡΠΎΠ±ΡΠ°Π»ΠΈ ΡΠΊΡΠΏΠ΅ΡΡΠΎΠ² ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π³ΠΎΡΠΎΠ΄ΠΎΠ², ΡΡΠΎΠ±Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈ Π²ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠ° ΠΌΠΈΡΠ°ΠΏΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΡΠ΅ΠΌΡ:
π Π‘ΠΎΠ²Π΅ΡΡ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ Java-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ CI ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
π Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°ΡΠ΅Π»ΡΡΡΠ²Π°, ΠΊΠΎΠΌΡ ΠΎΠ½ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡΡ ΠΏΡΠ°Π²Π° Ρ Π°Π²ΡΠΎΡΠ° ΠΊΠΎΠ΄Π°?
π ΠΠ½ΡΠΈΠ΄Π΅Π½ΡΡ Π² ΠΏΡΠΎΠΌΠ΅: ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΠΈ Π½Π΅ Π΄Π΅Π»Π°ΡΡ, ΡΡΠΎΠ±Ρ ΡΡΡΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠΈΠ΄Π΅Π½Ρ, ΠΈ ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ Β«Π‘Π΅ΡΠ²ΠΈΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½, ΠΏΠΎΠ²ΡΠΎΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· 5 ΠΌΠΈΠ½ΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ·ΠΆΠ΅Β»?
ΠΡΡΡΠ΅ΡΠ°Π΅ΠΌΡΡ 25 Π°ΠΏΡΠ΅Π»Ρ Ρ 17:30 Π΄ΠΎ 22:00 Π² Π»ΠΎΡΡΠ΅ FoodFactory: ΠΠΎΠ²ΠΎΡΠΈΠ±ΠΈΡΡΠΊ, ΡΠ». ΠΠΎΠΌΠΌΡΠ½ΠΈΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ, 14.
Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅!
ΠΡ ΡΠΎΠ±ΡΠ°Π»ΠΈ ΡΠΊΡΠΏΠ΅ΡΡΠΎΠ² ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π³ΠΎΡΠΎΠ΄ΠΎΠ², ΡΡΠΎΠ±Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈ Π²ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠ° ΠΌΠΈΡΠ°ΠΏΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΡΠ΅ΠΌΡ:
π Π‘ΠΎΠ²Π΅ΡΡ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ Java-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ CI ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
π Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°ΡΠ΅Π»ΡΡΡΠ²Π°, ΠΊΠΎΠΌΡ ΠΎΠ½ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡΡ ΠΏΡΠ°Π²Π° Ρ Π°Π²ΡΠΎΡΠ° ΠΊΠΎΠ΄Π°?
π ΠΠ½ΡΠΈΠ΄Π΅Π½ΡΡ Π² ΠΏΡΠΎΠΌΠ΅: ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΠΈ Π½Π΅ Π΄Π΅Π»Π°ΡΡ, ΡΡΠΎΠ±Ρ ΡΡΡΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠΈΠ΄Π΅Π½Ρ, ΠΈ ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ Β«Π‘Π΅ΡΠ²ΠΈΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½, ΠΏΠΎΠ²ΡΠΎΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· 5 ΠΌΠΈΠ½ΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ·ΠΆΠ΅Β»?
ΠΡΡΡΠ΅ΡΠ°Π΅ΠΌΡΡ 25 Π°ΠΏΡΠ΅Π»Ρ Ρ 17:30 Π΄ΠΎ 22:00 Π² Π»ΠΎΡΡΠ΅ FoodFactory: ΠΠΎΠ²ΠΎΡΠΈΠ±ΠΈΡΡΠΊ, ΡΠ». ΠΠΎΠΌΠΌΡΠ½ΠΈΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ, 14.
Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅!
π9π₯2