#ForkJoinPool #FixedThreadPool #parallelStream #stream
ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ°Ρ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ Π·ΠΎΠ½Π΅ ΠΊΠΎΠ΄Π° Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ FixedThreadPool ΠΏΡΠΈ ΠΏΠΎΠ΄Π½ΡΡΠΈΠΈ parallelStream(), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΠΎΠ½ ΡΠΎΠ·Π΄Π°ΡΡ Π²Π½ΡΡΡΠΈ ΡΡΡΠΈΠΌΠ° Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ForkJoinPool - ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π½Π°Ρ ΠΊΠ°ΡΠ°.
Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΠΆΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΡΡΡΠΈΠΌ ΡΡΠ°ΡΡΡΠ΅Ρ Π²Π½ΡΡΡΠΈ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΈΠΏΠ° fork join, ΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΡΠ°Π½ΠΈΡΡ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΠΈΠΌΠ° ΠΎΠ½ ΠΏΠΎΠΉΠΌΠ΅Ρ ΠΏΠΎ ΡΠΈΠΏΡ ΠΏΠΎΡΠΎΠΊΠ°, ΡΡΠΎ ΡΠΆΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π½ΡΡΡΠΈ ForkJoinPool ΠΈ ΡΡΡΠΈΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.
ΠΠ° ΡΠΊΡΠΈΠ½Π΅ Π² ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΏΠ»ΠΎΡ Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΈ Π²ΠΈΠ΄Π½Ρ ΠΎΠ±ΡΡΠ½ΡΠ΅ (Π½Π΅ fork join) ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡΠ»ΠΈ Π² ΡΡΡΠΈΠΌ ΠΈ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ fork join ΠΏΠΎΡΠΎΠΊΠΈ ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ΄Π΅Ρ Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ.
ΠΠΎΡ ΡΠ°ΠΊ.
ΠΡΠΈ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π΅ "ΡΠ·Π½Π°ΡΡ" Π΄ΡΡΠ³ Π΄ΡΡΠ³Π° Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΡΡΠΈΠΌΠ°Ρ .
Π’ΠΈΠΏΠ° "ΡΠΉ ΡΠΎΠ²Π°ΡΠΈΡ, ΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΡΡΡΠΈΠΌ Π²Π½ΡΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΈ Π½Π΅ΡΠ΅Π³ΠΎ Π³ΠΎΡΠΎΠ΄ΠΈΡΡ Π΅ΡΡ ΠΎΠ΄Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ Π² ΡΠ΅Π±Π΅".
ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ°Ρ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ Π·ΠΎΠ½Π΅ ΠΊΠΎΠ΄Π° Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ FixedThreadPool ΠΏΡΠΈ ΠΏΠΎΠ΄Π½ΡΡΠΈΠΈ parallelStream(), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΠΎΠ½ ΡΠΎΠ·Π΄Π°ΡΡ Π²Π½ΡΡΡΠΈ ΡΡΡΠΈΠΌΠ° Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ForkJoinPool - ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π½Π°Ρ ΠΊΠ°ΡΠ°.
Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΠΆΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΡΡΡΠΈΠΌ ΡΡΠ°ΡΡΡΠ΅Ρ Π²Π½ΡΡΡΠΈ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΈΠΏΠ° fork join, ΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΡΠ°Π½ΠΈΡΡ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΠΈΠΌΠ° ΠΎΠ½ ΠΏΠΎΠΉΠΌΠ΅Ρ ΠΏΠΎ ΡΠΈΠΏΡ ΠΏΠΎΡΠΎΠΊΠ°, ΡΡΠΎ ΡΠΆΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π½ΡΡΡΠΈ ForkJoinPool ΠΈ ΡΡΡΠΈΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.
ΠΠ° ΡΠΊΡΠΈΠ½Π΅ Π² ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΏΠ»ΠΎΡ Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΈ Π²ΠΈΠ΄Π½Ρ ΠΎΠ±ΡΡΠ½ΡΠ΅ (Π½Π΅ fork join) ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡΠ»ΠΈ Π² ΡΡΡΠΈΠΌ ΠΈ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ fork join ΠΏΠΎΡΠΎΠΊΠΈ ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ΄Π΅Ρ Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ.
ΠΠΎΡ ΡΠ°ΠΊ.
ΠΡΠΈ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π΅ "ΡΠ·Π½Π°ΡΡ" Π΄ΡΡΠ³ Π΄ΡΡΠ³Π° Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΡΡΠΈΠΌΠ°Ρ .
Π’ΠΈΠΏΠ° "ΡΠΉ ΡΠΎΠ²Π°ΡΠΈΡ, ΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΡΡΡΠΈΠΌ Π²Π½ΡΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΈ Π½Π΅ΡΠ΅Π³ΠΎ Π³ΠΎΡΠΎΠ΄ΠΈΡΡ Π΅ΡΡ ΠΎΠ΄Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ Π² ΡΠ΅Π±Π΅".
β€1π€―1
#coffee #javastory #java
ΠΠΎΡΠ΅ Ρ ΠΆΠΈΠ²ΠΎΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΠΎΡΡΡΠΎΠ²Π° Π―Π²Π° (Java).
ΠΠΎΡΠ΅ Π±ΡΠ» Π·Π°Π²Π΅Π·Π΅Π½ Π² ΠΠ½Π΄ΠΎΠ½Π΅Π·ΠΈΡ Π³ΠΎΠ»Π»Π°Π½Π΄ΡΠΊΠΈΠΌΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΡΠ°ΠΌΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ 17 Π²Π΅ΠΊΠ°. ΠΠΎΡΠ΅ΠΉΠ½ΡΠ΅ ΡΠ΅ΠΌΠ΅Π½Π° Π±ΡΠ»ΠΈ ΡΠ°ΠΉΠ½ΠΎ Π²ΡΠ²Π΅Π·Π΅Π½Ρ ΠΈΠ· ΠΠ΅ΠΌΠ΅Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° 100 Π»Π΅Ρ ΡΠ°Π½ΡΡΠ΅. Π ΡΠ»ΠΎΠ²Ρ, ΡΠΌΠ΅ΡΡ ΠΠ½Π΄ΠΎΠ½Π΅Π·ΠΈΠΈ Π―Π²Ρ ΠΈ ΠΠ΅ΠΌΠ΅Π½Π° ΠΠΎΠΊΠΊΠΈ ΡΡΠ°Π»Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΊΠΎΡΠ΅ΠΉΠ½ΠΎΠΉ ΡΠΌΠ΅ΡΡΡ Π² ΠΈΡΡΠΎΡΠΈΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΠΊ ΠΈ Π½Π°Π·ΡΠ²Π°Π»Π°ΡΡ β Β«ΠΠΎΠΊΠΊΠ° Π―Π²Π°Β».
ΠΠΎΡΠ΅ Ρ ΠΆΠΈΠ²ΠΎΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΠΎΡΡΡΠΎΠ²Π° Π―Π²Π° (Java).
ΠΠΎΡΠ΅ Π±ΡΠ» Π·Π°Π²Π΅Π·Π΅Π½ Π² ΠΠ½Π΄ΠΎΠ½Π΅Π·ΠΈΡ Π³ΠΎΠ»Π»Π°Π½Π΄ΡΠΊΠΈΠΌΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΡΠ°ΠΌΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ 17 Π²Π΅ΠΊΠ°. ΠΠΎΡΠ΅ΠΉΠ½ΡΠ΅ ΡΠ΅ΠΌΠ΅Π½Π° Π±ΡΠ»ΠΈ ΡΠ°ΠΉΠ½ΠΎ Π²ΡΠ²Π΅Π·Π΅Π½Ρ ΠΈΠ· ΠΠ΅ΠΌΠ΅Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° 100 Π»Π΅Ρ ΡΠ°Π½ΡΡΠ΅. Π ΡΠ»ΠΎΠ²Ρ, ΡΠΌΠ΅ΡΡ ΠΠ½Π΄ΠΎΠ½Π΅Π·ΠΈΠΈ Π―Π²Ρ ΠΈ ΠΠ΅ΠΌΠ΅Π½Π° ΠΠΎΠΊΠΊΠΈ ΡΡΠ°Π»Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΊΠΎΡΠ΅ΠΉΠ½ΠΎΠΉ ΡΠΌΠ΅ΡΡΡ Π² ΠΈΡΡΠΎΡΠΈΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΠΊ ΠΈ Π½Π°Π·ΡΠ²Π°Π»Π°ΡΡ β Β«ΠΠΎΠΊΠΊΠ° Π―Π²Π°Β».
#StringBuilder #concat #String
StringBuilder Π΄Π»Ρ ΡΠΊΠ»Π΅ΠΉΠΊΠΈ ΡΡΡΠΈΠ½Π³ΠΎΠ² Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΈ ΡΠΈΠΏΠ° "+" ΠΈΠ»ΠΈ .concat().
Π Π°Π·Π½ΠΈΡΠ° Π² ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ - Π² ΡΠ°Π·Ρ.
- ΠΠΆΠΎΡΡΠ° ΠΠ»ΠΎΡ "Effective Java" ΡΡΡ. 279
StringBuilder Π΄Π»Ρ ΡΠΊΠ»Π΅ΠΉΠΊΠΈ ΡΡΡΠΈΠ½Π³ΠΎΠ² Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΈ ΡΠΈΠΏΠ° "+" ΠΈΠ»ΠΈ .concat().
Π Π°Π·Π½ΠΈΡΠ° Π² ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ - Π² ΡΠ°Π·Ρ.
- ΠΠΆΠΎΡΡΠ° ΠΠ»ΠΎΡ "Effective Java" ΡΡΡ. 279
#ThreadName #setName #ThreadIndex
ΠΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊΠΈ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ ΡΠ°ΠΊ ΠΈ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠ»Π° ΠΏΠΎΡΠΎΠΊΠΎΠ².
ΠΠ° ΡΠΊΡΠΈΠ½Π΅ ΠΏΡΠΈΠΌΠ΅Ρ - ΠΊΠ°ΠΊ Π·Π°Π΄Π°ΡΡ ΠΈΠΌΡ Π΄Π»Ρ ForkJoin ΠΏΠΎΡΠΎΠΊΠΎΠ² Ρ Π΄ΠΎΠ±Π°Π²ΠΊΠΎΠΉ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π² ΠΏΡΠ»Π΅.
ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΎΠ½ΡΡΡ ΠΎΡΠΊΡΠ΄Π° (ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ ThreadPool) ΡΡΠΎΡ ΠΏΠΎΡΠΎΠΊ ΠΈ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΎ ΡΠ΅Π±Π΅ Π² Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅.
ΠΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊΠΈ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ ΡΠ°ΠΊ ΠΈ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠ»Π° ΠΏΠΎΡΠΎΠΊΠΎΠ².
ΠΠ° ΡΠΊΡΠΈΠ½Π΅ ΠΏΡΠΈΠΌΠ΅Ρ - ΠΊΠ°ΠΊ Π·Π°Π΄Π°ΡΡ ΠΈΠΌΡ Π΄Π»Ρ ForkJoin ΠΏΠΎΡΠΎΠΊΠΎΠ² Ρ Π΄ΠΎΠ±Π°Π²ΠΊΠΎΠΉ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π² ΠΏΡΠ»Π΅.
ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΎΠ½ΡΡΡ ΠΎΡΠΊΡΠ΄Π° (ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ ThreadPool) ΡΡΠΎΡ ΠΏΠΎΡΠΎΠΊ ΠΈ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΎ ΡΠ΅Π±Π΅ Π² Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅.
π₯1
function_init_apply.JPG
46.6 KB
#Function
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Function<Table, Boolean> checkPortionLoad - ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ.
Π£Π΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° checkPortionLoad.apply() Π½Π° Π²Ρ ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΠ²Π΅Ρ ΡΠΎΠΆΠ΅ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° (Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Boolean) ΠΏΡΡΠΌ Π² ΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ Π³Π΄Π΅ Π½Π°Π΄ΠΎ.
ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ°ΠΌ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ "ΡΠ½Π°ΡΡΠΆΠΈ" ΠΊΠ»Π°ΡΡΠ°.
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Function<Table, Boolean> checkPortionLoad - ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ.
Π£Π΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° checkPortionLoad.apply() Π½Π° Π²Ρ ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΠ²Π΅Ρ ΡΠΎΠΆΠ΅ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° (Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Boolean) ΠΏΡΡΠΌ Π² ΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ Π³Π΄Π΅ Π½Π°Π΄ΠΎ.
ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ°ΠΌ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ "ΡΠ½Π°ΡΡΠΆΠΈ" ΠΊΠ»Π°ΡΡΠ°.
π€1
#Git #Commit
https://uncaughtexception.ru/posts/2017/03/22/kogda-nuzhno-delat-kommit/
Π‘ΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»Π°Π΅ΡΡ ΠΊΠΎΠΌΠΌΠΈΡΡ ΠΏΠΎΠΏΡΠΎΡΡΡ ΡΠ°ΡΠ΅ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ Π½ΡΠΆΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΈ Π½Π΅ ΠΊΠΎΠΏΠΈΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ½Π΅ΠΆΠ½ΡΠΉ ΠΊΠΎΠΌ, ΡΠΎ Π΄ΡΡΠ°ΡΡ ΠΏΡΠΈ Π²ΠΈΠ΄Π΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΡ Π΄Π»Ρ ΡΠ΅Π±Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎ ΠΊΠΎΠ΄Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π»Π΅Π³ΡΠ΅. Π‘ΡΠ°ΡΡΡ Π½Π° ΡΠ΅ΠΌΡ ΠΏΡΠΈΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ.
Π ΠΊΠ°ΠΊ Π²Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ?
ΠΠΈΡΠΈΡΠ΅ ΠΏΠΎΠΊΠ° ΠΈΠ΄Π΅Ρ Π²Π΄ΠΎΡ Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ Π° ΠΏΠΎΡΠΎΠΌ - Π²ΡΠ΅ Π² ΠΎΠ΄ΠΈΠ½ Π±ΠΎΠ»ΡΡΠΎΠΉ?
https://uncaughtexception.ru/posts/2017/03/22/kogda-nuzhno-delat-kommit/
Π‘ΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»Π°Π΅ΡΡ ΠΊΠΎΠΌΠΌΠΈΡΡ ΠΏΠΎΠΏΡΠΎΡΡΡ ΡΠ°ΡΠ΅ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ Π½ΡΠΆΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΈ Π½Π΅ ΠΊΠΎΠΏΠΈΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ½Π΅ΠΆΠ½ΡΠΉ ΠΊΠΎΠΌ, ΡΠΎ Π΄ΡΡΠ°ΡΡ ΠΏΡΠΈ Π²ΠΈΠ΄Π΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΡ Π΄Π»Ρ ΡΠ΅Π±Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎ ΠΊΠΎΠ΄Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π»Π΅Π³ΡΠ΅. Π‘ΡΠ°ΡΡΡ Π½Π° ΡΠ΅ΠΌΡ ΠΏΡΠΈΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ.
Π ΠΊΠ°ΠΊ Π²Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ?
ΠΠΈΡΠΈΡΠ΅ ΠΏΠΎΠΊΠ° ΠΈΠ΄Π΅Ρ Π²Π΄ΠΎΡ Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ Π° ΠΏΠΎΡΠΎΠΌ - Π²ΡΠ΅ Π² ΠΎΠ΄ΠΈΠ½ Π±ΠΎΠ»ΡΡΠΎΠΉ?
uncaughtexception.ru
ΠΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΌΠΌΠΈΡ
ΠΡΠ΄ΠΈ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΌΠΌΠΈΡΡ, ΠΊΠ°ΠΊ Π±ΠΎΠ³ Π½Π° Π΄ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ. ΠΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΈΡΡΠΎΡΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Π½Π° GitHub.
π2
#CompletableFuture #Thread #Future #ThreadSafe
Π‘ΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Thread ΠΏΠΎΡΠΎΠΊΠ°?
Π Π΅ΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΡΠΏΠ°Π»ΠΎ ΠΏΠΎ Π΄ΠΎΡΠΎΠ³Π΅ ΠΈ Π³Π΄Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ?
Π§ΡΠΎΠ±Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° Π½Π° Π±Π°Π·Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ Π½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ»Ρ ΠΎΠ·Π½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΎΡΠ»ΠΎΠ²ΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ - ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ CompletableFuture.
Π CompletableFuture ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π·Π΄Π΅ΡΡ - https://annimon.com/article/3462.
ΠΠ° Π΄Π°Π½Π½ΠΎΠΌ ΠΆΠ΅ ΠΊΡΡΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡΡΡ CompletableFuture Π·Π°Π΄Π°ΡΠΈ (ΡΡΡΠΎΠΊΠ° 53) ΠΈ ΠΊΠ°ΠΊ ΡΡΠΈ ΠΆΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΎΡΠ΄Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ "Π½Π΅ΠΎΡΡ ΠΎΠ΄Ρ ΠΎΡ ΠΊΠ°ΡΡΡ" (ΡΡΡΠΎΠΊΠ° 59) Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° get().
ΠΠΎΠ΄ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡΡΡ Runnable, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π³Π»Π°ΡΡΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΠΎΡΠΎΠΊΠ° ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈ ΠΏΠΎ ΡΠ΄ΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
Π‘ΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Thread ΠΏΠΎΡΠΎΠΊΠ°?
Π Π΅ΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΡΠΏΠ°Π»ΠΎ ΠΏΠΎ Π΄ΠΎΡΠΎΠ³Π΅ ΠΈ Π³Π΄Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ?
Π§ΡΠΎΠ±Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° Π½Π° Π±Π°Π·Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ Π½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ»Ρ ΠΎΠ·Π½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΎΡΠ»ΠΎΠ²ΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ - ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ CompletableFuture.
Π CompletableFuture ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π·Π΄Π΅ΡΡ - https://annimon.com/article/3462.
ΠΠ° Π΄Π°Π½Π½ΠΎΠΌ ΠΆΠ΅ ΠΊΡΡΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡΡΡ CompletableFuture Π·Π°Π΄Π°ΡΠΈ (ΡΡΡΠΎΠΊΠ° 53) ΠΈ ΠΊΠ°ΠΊ ΡΡΠΈ ΠΆΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΎΡΠ΄Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ "Π½Π΅ΠΎΡΡ ΠΎΠ΄Ρ ΠΎΡ ΠΊΠ°ΡΡΡ" (ΡΡΡΠΎΠΊΠ° 59) Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° get().
ΠΠΎΠ΄ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡΡΡ Runnable, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π³Π»Π°ΡΡΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΠΎΡΠΎΠΊΠ° ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈ ΠΏΠΎ ΡΠ΄ΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
#Component #Repository #Service #Spring
ΠΠ°ΠΊΡΡ Spring Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°Π΄ ΠΊΠ»Π°ΡΡΠΎΠΌ, @Component ΠΈΠ»ΠΈ @Repository? Π ΠΌΠΎΠΆΠ΅Ρ ΠΈ @Service?
Π‘ΡΠ°ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ°Π·Π½ΠΈΡΡ Π½Π° ΡΠ΅ΠΌΡ:
https://coderlessons.com/articles/java/raznitsa-mezhdu-component-service-controller-i-repository-v-spring
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΠ· ΡΠΊΡΠΈΠ½ΡΠΎΡΠ° Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Repository ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Spring Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠΎ ΠΊΠ»Π°ΡΡ ΠΏΠ΅ΡΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΡ.
Π Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ - ΡΠ»ΡΠΆΠΈΡ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΠ°ΠΊΡΡ Spring Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°Π΄ ΠΊΠ»Π°ΡΡΠΎΠΌ, @Component ΠΈΠ»ΠΈ @Repository? Π ΠΌΠΎΠΆΠ΅Ρ ΠΈ @Service?
Π‘ΡΠ°ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ°Π·Π½ΠΈΡΡ Π½Π° ΡΠ΅ΠΌΡ:
https://coderlessons.com/articles/java/raznitsa-mezhdu-component-service-controller-i-repository-v-spring
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΠ· ΡΠΊΡΠΈΠ½ΡΠΎΡΠ° Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Repository ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Spring Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠΎ ΠΊΠ»Π°ΡΡ ΠΏΠ΅ΡΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΡ.
Π Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ - ΡΠ»ΡΠΆΠΈΡ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
#Maven #bompom
https://habr.com/ru/post/344480/
ΠΠ΅ΠΏΠ»ΠΎΡ Π°Ρ ΡΡΠ°ΡΡΡ ΠΏΡΠΎ Maven. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ "BOM POM" ΠΊΠΎΠ³Π΄Π° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ Π½Π°Π΄ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
https://habr.com/ru/post/344480/
ΠΠ΅ΠΏΠ»ΠΎΡ Π°Ρ ΡΡΠ°ΡΡΡ ΠΏΡΠΎ Maven. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ "BOM POM" ΠΊΠΎΠ³Π΄Π° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ Π½Π°Π΄ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
Π₯Π°Π±Ρ
ΠΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΠΌΠ°Π²Π΅Π½. Π§Π°ΡΡΡ 2: ΡΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΡΠΎ Π²ΡΠΎΡΠ°Ρ ΡΡΠ°ΡΡΡ, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½Π°Ρ ΠΌΠ°Π²Π΅Π½Ρ ΠΈ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². Π¦Π΅Π»ΡΡ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π±ΡΠ΄Π΅Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Π²Π΅Π½. ΠΡΠΎΠ±ΡΡ
...
#Maven #DependencyScope #Scope #pom #dependencyManagement
#provided
ΠΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π΅ΡΠ΅ ΠΎ Maven.
Π§ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΠΎΠ±Π»Π°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ "Dependency scope"?
Π ΠΊΠ°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π»ΡΡΡΠ΅?
<scope>?</scope>
ΠΠ±Π»Π°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ scope ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠ°ΠΏ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅:
https://java-online.ru/maven-dependency.xhtml#scope
#provided
ΠΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π΅ΡΠ΅ ΠΎ Maven.
Π§ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΠΎΠ±Π»Π°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ "Dependency scope"?
Π ΠΊΠ°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π»ΡΡΡΠ΅?
<scope>?</scope>
ΠΠ±Π»Π°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ scope ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠ°ΠΏ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅:
https://java-online.ru/maven-dependency.xhtml#scope
#AtomicReference #ThreadSafe
ΠΡΠΈΠ²Π΅Ρ.
Π ΠΊΠ°ΠΊ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ "Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΡ" Π² Java?
ΠΠΎΠΆΠ΅Ρ ΡΡΠΎ ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΡΠΎ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ?
ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΡΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ "Π½Π΅Π΄Π΅Π»ΠΈΠΌΠΎΡΡΠΈ" ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
Π’ΠΎ Π΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π»ΠΈΠ±ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ (ΠΏΡΠΎΡΠΈΡΠ°ΡΡ, ΠΏΡΠΈΠ±Π°Π²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π·Π°ΠΏΠΈΡΠ°ΡΡ - ΡΡΠΎ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ) Π»ΠΈΠ±ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ Π½Π΅ Π½Π°Π΄ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π΅ ΡΠ°ΡΠΊΠΎΠ»Π±Π°ΡΠΈΠ»ΠΎ Π² Π΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ.
Π‘ΡΡΠ»ΠΊΠ° Π½Π° Π±Π΅ΡΠ΅Π΄Ρ ΠΏΠΎ ΡΠ΅ΠΌΠ΅:
https://ru.stackoverflow.com/questions/616278/%D0%90%D1%82%D0%BE%D0%BC%D0%B0%D1%80%D0%BD%D1%8B%D0%B5-%D0%B8-%D0%BD%D0%B5%D0%B0%D1%82%D0%BE%D0%BC%D0%B0%D1%80%D0%BD%D1%8B%D0%B5-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8-java
ΠΡΠΈΠ²Π΅Ρ.
Π ΠΊΠ°ΠΊ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ "Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΡ" Π² Java?
ΠΠΎΠΆΠ΅Ρ ΡΡΠΎ ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΡΠΎ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ?
ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΡΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ "Π½Π΅Π΄Π΅Π»ΠΈΠΌΠΎΡΡΠΈ" ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
Π’ΠΎ Π΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π»ΠΈΠ±ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ (ΠΏΡΠΎΡΠΈΡΠ°ΡΡ, ΠΏΡΠΈΠ±Π°Π²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π·Π°ΠΏΠΈΡΠ°ΡΡ - ΡΡΠΎ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ) Π»ΠΈΠ±ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ Π½Π΅ Π½Π°Π΄ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π΅ ΡΠ°ΡΠΊΠΎΠ»Π±Π°ΡΠΈΠ»ΠΎ Π² Π΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ.
Π‘ΡΡΠ»ΠΊΠ° Π½Π° Π±Π΅ΡΠ΅Π΄Ρ ΠΏΠΎ ΡΠ΅ΠΌΠ΅:
https://ru.stackoverflow.com/questions/616278/%D0%90%D1%82%D0%BE%D0%BC%D0%B0%D1%80%D0%BD%D1%8B%D0%B5-%D0%B8-%D0%BD%D0%B5%D0%B0%D1%82%D0%BE%D0%BC%D0%B0%D1%80%D0%BD%D1%8B%D0%B5-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8-java
#StreamAPI #Map #groupingBy #mapping
Java Stream API ΡΡΠ»ΠΈΡ.
Π’ΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ Π΅ΡΠ΅ ΡΠ°Π· ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ½ΡΠ» Π΄Π»Ρ ΡΠ΅Π±Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΡΡΡΠΈΠΌΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ - Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΡΠΏΠΈΡΠΊΠ° ΡΠ°Π±ΠΎΡΠΈΡ ΠΏΠΎ ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠ΅Π½Π°:
https://habr.com/ru/post/348536/
Java Stream API ΡΡΠ»ΠΈΡ.
Π’ΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ Π΅ΡΠ΅ ΡΠ°Π· ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ½ΡΠ» Π΄Π»Ρ ΡΠ΅Π±Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΡΡΡΠΈΠΌΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ - Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΡΠΏΠΈΡΠΊΠ° ΡΠ°Π±ΠΎΡΠΈΡ ΠΏΠΎ ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠ΅Π½Π°:
Map<String, Set<String>> map4 = workers.stream().collect(
Collectors.groupingBy(Worker::getPosition,
Collectors.mapping(Worker::getName,Collectors.toSet())));
https://habr.com/ru/post/348536/
Π₯Π°Π±Ρ
7 ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ groupingBy Π² Stream API
ΠΠΎΠ²ΠΈΡΠΊΠ°ΠΌ Π·Π°ΡΠ°ΡΡΡΡ ΡΡΡΠ΄Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π²ΡΠ³ΠΎΠ΄Ρ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Stream API Π·Π°ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΡ
ΡΠΈΠΊΠ»ΠΎΠ², ΠΏΠΎΠ΄ ΠΊΠ°ΡΠΎΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΆΠ°...
π2
#mockbean #spybean #springboottest #ioc
ΠΠ΅Π»Π°Π» Ρ ΡΡΡ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΡΠ΅ΡΡΠΎΠ² ΠΏΡΠΈ Π±Π΅Π³ΡΡΠ²Π΅ ΠΎΡ ΠΌΠΎΠ΄Π½ΠΎΠ³ΠΎ SpringBoot Π² Ρ ΡΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ spring-context...
Π ΠΏΠΎΠ½ΡΠ» ΡΡΠΎ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² SpringBoot Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ JUnit ΡΠ΅ΡΡΠΎΠ² ΠΊΠ°ΠΊ @SpyBean ΠΈ @MockBean, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ Spring IoC ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²Π½Π΅Π΄ΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΠ°Π΄ΠΈΠΌ ΠΊΡΠ°ΡΠΊΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ:
- @MockBean - ΠΌΠΎΠΊΠΈΡΡΠ΅Ρ (Mockito Mock) Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΠΏΡΠΈΠ½Π³Π°.
- @SpyBean - Π΄Π΅Π»Π°Π΅Ρ ΡΠΏΠΈΠΎΠ½Π° (Mockito Spy) ΠΈΠ· ΡΠΏΡΠΈΠ½Π³ Π±ΠΈΠ½Π°.
SpringBoot ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠΈΡΠ½ΡΠΉ, Π½ΠΎ Π΅ΡΡΡ ΠΈ ΠΏΡΠΈΡΡΠ½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ°ΠΊ ΡΡΠΈ Π΄Π²Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ΄ΡΡ Π² ΡΠΎΡΡΠ°Π²Π΅.
ΠΠ»Ρ ΠΏΠΎΡΠΈΡΠ°ΡΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ:
https://java-ru-blog.blogspot.com/2020/04/spring-boot-testing-mock-spy.html
ΠΠ΅Π»Π°Π» Ρ ΡΡΡ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΡΠ΅ΡΡΠΎΠ² ΠΏΡΠΈ Π±Π΅Π³ΡΡΠ²Π΅ ΠΎΡ ΠΌΠΎΠ΄Π½ΠΎΠ³ΠΎ SpringBoot Π² Ρ ΡΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ spring-context...
Π ΠΏΠΎΠ½ΡΠ» ΡΡΠΎ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² SpringBoot Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ JUnit ΡΠ΅ΡΡΠΎΠ² ΠΊΠ°ΠΊ @SpyBean ΠΈ @MockBean, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ Spring IoC ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²Π½Π΅Π΄ΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΠ°Π΄ΠΈΠΌ ΠΊΡΠ°ΡΠΊΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ:
- @MockBean - ΠΌΠΎΠΊΠΈΡΡΠ΅Ρ (Mockito Mock) Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΠΏΡΠΈΠ½Π³Π°.
- @SpyBean - Π΄Π΅Π»Π°Π΅Ρ ΡΠΏΠΈΠΎΠ½Π° (Mockito Spy) ΠΈΠ· ΡΠΏΡΠΈΠ½Π³ Π±ΠΈΠ½Π°.
SpringBoot ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠΈΡΠ½ΡΠΉ, Π½ΠΎ Π΅ΡΡΡ ΠΈ ΠΏΡΠΈΡΡΠ½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ°ΠΊ ΡΡΠΈ Π΄Π²Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ΄ΡΡ Π² ΡΠΎΡΡΠ°Π²Π΅.
ΠΠ»Ρ ΠΏΠΎΡΠΈΡΠ°ΡΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ:
https://java-ru-blog.blogspot.com/2020/04/spring-boot-testing-mock-spy.html
Blogspot
Spring Boot: ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΌΠΎΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ-ΡΠΏΠΈΠΎΠ½Ρ
π€1
#superBuilder #builder #lombok
ΠΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Lombok @Builder ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΆΠΈΠ·Π½Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΌ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΌ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΊΠ»Π°ΡΡΠ΅.
Π ΠΊΠ°ΠΊ Π½Π°ΡΡΠ΅Ρ Π±ΠΈΠ»Π΄Π΅ΡΠ° Π΄Π»Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ²?
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ - Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @SuperBuilder!
ΠΠ±ΡΠ°Ρ ΡΡ Π΅ΠΌΠ° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π²ΠΊΡΠΏΠ΅ Ρ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°ΠΌΠΈ:
@SuperBuilder
public abstract class Parent {
// Π½Π°ΡΠΈΠ½ΠΊΠ°...
}
@SuperBuilder
public class Son extends Parent {
// Π²ΠΊΡΡΠ½Π°Ρ Π½Π°ΡΠΈΠ½ΠΊΠ°...
}
@SuperBuilder
public class GrandSon extends Son {
// Π½Π°ΡΠΈΠ½ΠΊΠ° Π΅ΡΠ΅ Π²ΠΊΡΡΠ½Π΅ΠΉ...
}
ΠΠ°ΠΆΠ½ΠΎ - @SuperBuilder Π½Π΅Π»ΡΠ·Ρ ΡΠΌΠ΅ΡΠΈΠ²Π°ΡΡ Ρ @Builder Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅:
https://javascopes.com/lombok-builder-inheritance-bce31ecd/
ΠΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Lombok @Builder ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΆΠΈΠ·Π½Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΌ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΌ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΊΠ»Π°ΡΡΠ΅.
Π ΠΊΠ°ΠΊ Π½Π°ΡΡΠ΅Ρ Π±ΠΈΠ»Π΄Π΅ΡΠ° Π΄Π»Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ²?
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ - Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @SuperBuilder!
ΠΠ±ΡΠ°Ρ ΡΡ Π΅ΠΌΠ° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π²ΠΊΡΠΏΠ΅ Ρ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°ΠΌΠΈ:
@SuperBuilder
public abstract class Parent {
// Π½Π°ΡΠΈΠ½ΠΊΠ°...
}
@SuperBuilder
public class Son extends Parent {
// Π²ΠΊΡΡΠ½Π°Ρ Π½Π°ΡΠΈΠ½ΠΊΠ°...
}
@SuperBuilder
public class GrandSon extends Son {
// Π½Π°ΡΠΈΠ½ΠΊΠ° Π΅ΡΠ΅ Π²ΠΊΡΡΠ½Π΅ΠΉ...
}
ΠΠ°ΠΆΠ½ΠΎ - @SuperBuilder Π½Π΅Π»ΡΠ·Ρ ΡΠΌΠ΅ΡΠΈΠ²Π°ΡΡ Ρ @Builder Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅:
https://javascopes.com/lombok-builder-inheritance-bce31ecd/
π1
#builder #lombok
ΠΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ builder ΠΏΠ°ΡΡΠ΅ΡΠ½ Π΅ΡΠ»ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π²Π΅ΡΠ°Π΅ΡΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°?
ΠΠ° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅ ΡΠ²Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° - ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΠ³Π°Π΅ΡΡΡ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ builder ΠΏΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠΌΡ ΡΠΈΠΏΡ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ²ΠΎΠ΅ ΠΈΠΌΡ Π±ΠΈΠ»Π΄Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄Π»Ρ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°:
@Builder(builderMethodName = "sunnyBuilder")
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π² ΠΏΡΠ½ΠΊΡΠ΅ "2.3. Π‘ΠΎΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Builders".
https://javascopes.com/lombok-builder-inheritance-bce31ecd/
ΠΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ builder ΠΏΠ°ΡΡΠ΅ΡΠ½ Π΅ΡΠ»ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π²Π΅ΡΠ°Π΅ΡΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°?
ΠΠ° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅ ΡΠ²Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° - ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΠ³Π°Π΅ΡΡΡ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ builder ΠΏΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠΌΡ ΡΠΈΠΏΡ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ²ΠΎΠ΅ ΠΈΠΌΡ Π±ΠΈΠ»Π΄Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄Π»Ρ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°:
@Builder(builderMethodName = "sunnyBuilder")
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π² ΠΏΡΠ½ΠΊΡΠ΅ "2.3. Π‘ΠΎΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Builders".
https://javascopes.com/lombok-builder-inheritance-bce31ecd/
π1