Π§ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ Connection?
ΠΡΠ°ΠΊ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ JDBC Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Connection β ΡΠ΅ΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ Π³Π»Π°Π²Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ JDBC. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠΎΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° β ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ SQL-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (Statement) ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π² Π²ΠΈΠ΄Π΅ ResultSet.
Connection ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π² Π²ΠΈΠ΄Π΅ ΠΊΠ»Π°ΡΡΠ° DatabaseMetaData ΠΌΠ΅ΡΠ°-ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π² ΡΠ΅Π»ΠΎΠΌ: ΡΠ°Π±Π»ΠΈΡΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠ°Ρ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° SQL, Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΈ Ρ.Π΄..
Π ΠΊΠΎΠ½Π½Π΅ΠΊΡΠ½Π΅ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΡΠΎ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ, ΡΠ΅ΠΆΠΈΠΌ Π°Π²ΡΠΎ-ΠΊΠΎΠΌΠΌΠΈΡΠ°, ΠΊΠ»ΡΡΠΈ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅. ΠΠ°ΠΏΠΏΠΈΠ½Π³ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ SQL Π² Java-ΡΠΈΠΏΡ Π·Π°Π΄Π°Π΅ΡΡΡ Π·Π΄Π΅ΡΡ ΠΆΠ΅, ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ typeMap.
ΠΠΎΠΌΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Connection ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ. ΠΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Savepoint, ΠΎΡΠΊΠ°ΡΠΈΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ, Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΠΈΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΊΠΎΠ³Π΄Π° Π°Π²ΡΠΎ-ΠΊΠΎΠΌΠΌΠΈΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½.
Java Guruπ€ #java
ΠΡΠ°ΠΊ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ JDBC Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Connection β ΡΠ΅ΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ Π³Π»Π°Π²Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ JDBC. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠΎΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° β ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ SQL-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (Statement) ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π² Π²ΠΈΠ΄Π΅ ResultSet.
Connection ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π² Π²ΠΈΠ΄Π΅ ΠΊΠ»Π°ΡΡΠ° DatabaseMetaData ΠΌΠ΅ΡΠ°-ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π² ΡΠ΅Π»ΠΎΠΌ: ΡΠ°Π±Π»ΠΈΡΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠ°Ρ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° SQL, Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΈ Ρ.Π΄..
Π ΠΊΠΎΠ½Π½Π΅ΠΊΡΠ½Π΅ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΡΠΎ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ, ΡΠ΅ΠΆΠΈΠΌ Π°Π²ΡΠΎ-ΠΊΠΎΠΌΠΌΠΈΡΠ°, ΠΊΠ»ΡΡΠΈ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅. ΠΠ°ΠΏΠΏΠΈΠ½Π³ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ SQL Π² Java-ΡΠΈΠΏΡ Π·Π°Π΄Π°Π΅ΡΡΡ Π·Π΄Π΅ΡΡ ΠΆΠ΅, ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ typeMap.
ΠΠΎΠΌΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Connection ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ. ΠΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Savepoint, ΠΎΡΠΊΠ°ΡΠΈΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ, Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΠΈΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΊΠΎΠ³Π΄Π° Π°Π²ΡΠΎ-ΠΊΠΎΠΌΠΌΠΈΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½.
Java Guruπ€ #java
π₯4β€3π2
ΠΠ°ΠΊΠ°Ρ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ @β ElementCollection, @β OneToMany ΠΈ @β ManyToMany?
ΠΡΠ΅ ΡΡΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ β ΡΠ°ΡΡΡ Java Persistence API. Π‘ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ JPA, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Hibernate.
ΠΠΎΠ³Π΄Π° Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΡΡΡΠ½ΠΎΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΅ΡΡΡ ΠΏΠΎΠ»Π΅-ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ, ΡΡΠΎ ΠΏΠΎΠ»Π΅ ΠΎΠ±ΡΠ·Π°Π½ΠΎ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ.
@β OneToMany ΠΈ @β ManyToMany Ρ ΡΠ°Π½ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ β Π΄Π»Ρ Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ Π²ΡΡ ΡΠ΅ ΠΆΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ JPA Π²ΡΠ΄Π²ΠΈΠ³Π°Π΅Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ @Entity ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠ²ΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅.
@β ElementCollection ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΡΠΈΠΌΠ΅Π½ΡΡΡ Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΡΠΈΠΏ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ @Embeddable, ΠΈΠ»ΠΈ Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² (ΠΎΠ±Π΅ΡΡΠΊΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ², ΡΡΡΠΎΠΊΠΈ, Π΄Π°ΡΡ, ΠΈ Ρ.Π΄.).
ΠΠ° ΡΡΠΎΠ²Π½Π΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π² ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·Π΅, Π΄Π»Ρ @ElementCollection Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ one-to-many.
ΠΠΎ ΠΈΠ· Java ΠΊΠΎΠ΄Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ: Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ id, ΠΈΠΌΠΈ Π½Π΅Π»ΡΠ·Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΠ΅ΠΌ ΡΠ°ΠΊΠ°Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ-ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π° β Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π»Π΅Π½ΠΈΠ²ΠΎ (Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ).
Java Guruπ€ #java
ΠΡΠ΅ ΡΡΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ β ΡΠ°ΡΡΡ Java Persistence API. Π‘ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ JPA, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Hibernate.
ΠΠΎΠ³Π΄Π° Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΡΡΡΠ½ΠΎΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΅ΡΡΡ ΠΏΠΎΠ»Π΅-ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ, ΡΡΠΎ ΠΏΠΎΠ»Π΅ ΠΎΠ±ΡΠ·Π°Π½ΠΎ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ.
@β OneToMany ΠΈ @β ManyToMany Ρ ΡΠ°Π½ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ β Π΄Π»Ρ Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ Π²ΡΡ ΡΠ΅ ΠΆΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ JPA Π²ΡΠ΄Π²ΠΈΠ³Π°Π΅Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ @Entity ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠ²ΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅.
@β ElementCollection ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΡΠΈΠΌΠ΅Π½ΡΡΡ Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΡΠΈΠΏ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ @Embeddable, ΠΈΠ»ΠΈ Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² (ΠΎΠ±Π΅ΡΡΠΊΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ², ΡΡΡΠΎΠΊΠΈ, Π΄Π°ΡΡ, ΠΈ Ρ.Π΄.).
ΠΠ° ΡΡΠΎΠ²Π½Π΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π² ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·Π΅, Π΄Π»Ρ @ElementCollection Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ one-to-many.
ΠΠΎ ΠΈΠ· Java ΠΊΠΎΠ΄Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ: Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ id, ΠΈΠΌΠΈ Π½Π΅Π»ΡΠ·Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΠ΅ΠΌ ΡΠ°ΠΊΠ°Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ-ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π° β Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π»Π΅Π½ΠΈΠ²ΠΎ (Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ).
Java Guruπ€ #java
π6β€4π₯3
ΠΠ»Ρ ΡΠ΅Π³ΠΎ ΡΠ»ΡΠΆΠΈΡ Java KeyStore?
KeyStore ΠΈ TrustStore β ΡΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ². ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΠΎΡΠΌΠ°ΡΠ° .jks, .dks, .p12, ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°.
ΠΠ»Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ Π½Π°Π΄ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ Π² JDK ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΡΡΠΈΠ»ΠΈΡΠ° β keytool. ΠΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΏΠΎΠ΄ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ (alias). ΠΡΠ΅ ΡΡΠΎΡ ΡΠ°ΠΉΠ» Π½Π°Π·ΡΠ²Π°ΡΡ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ². ΠΡΠΎΡ ΡΠ°ΠΉΠ» ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°ΡΠΈΡΠ΅Π½ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ.
KeyStore ΠΈ TrustStore ΡΡΡΡΠΎΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅, Π½ΠΎ ΡΠ»ΡΠΆΠ°Ρ ΡΠ°Π·Π½ΡΠΌ ΡΠ΅Π»ΡΠΌ. KeyStore Ρ ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ TrustStore β ΠΎ Π΄ΡΡΠ³ΠΈΡ , ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ Π΄ΠΎΠ²Π΅ΡΡΠ΅ΠΌ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ KeyStore. ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ javax.net.ssl.keyStore (ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°), javax.net.ssl.keyStoreType (ΡΠΈΠΏ) ΠΈ javax.net.ssl.keyStorePassword (ΠΏΠ°ΡΠΎΠ»Ρ). ΠΠΎΠ±Π°Π²ΠΎΡΠ½ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ, ΠΊΠ»Π°ΡΡΠΎΠΌ java.security.KeyStore.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΎΠ΄ΠΈΠ½ TrustStore, ΡΠ°ΠΉΠ» jre/lib/security/cacerts. ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ JVM javax.net.ssl.trustStore, javax.net.ssl.trustStorePassword ΠΈ javax.net.ssl.trustStorePassword.
Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ β ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ TrustStore Ρ ΡΠ°ΠΌΠΎΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠΌ SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ³Π»ΠΎ Ρ ΠΎΠ΄ΠΈΡΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠ°ΠΉΡ ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ HTTPS, Π½Π΅ ΠΏΡΠΎΠ²Π°Π»ΠΈΠ²Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΠΈΠ±ΠΎ ΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ KeyStore Ρ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΡΠΌ SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΠΊΠ°ΠΊ HTTPS-ΡΠ΅ΡΠ²Π΅Ρ.
Java Guruπ€ #java
KeyStore ΠΈ TrustStore β ΡΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ². ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΠΎΡΠΌΠ°ΡΠ° .jks, .dks, .p12, ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°.
ΠΠ»Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ Π½Π°Π΄ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ Π² JDK ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΡΡΠΈΠ»ΠΈΡΠ° β keytool. ΠΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΏΠΎΠ΄ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ (alias). ΠΡΠ΅ ΡΡΠΎΡ ΡΠ°ΠΉΠ» Π½Π°Π·ΡΠ²Π°ΡΡ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ². ΠΡΠΎΡ ΡΠ°ΠΉΠ» ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°ΡΠΈΡΠ΅Π½ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ.
KeyStore ΠΈ TrustStore ΡΡΡΡΠΎΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅, Π½ΠΎ ΡΠ»ΡΠΆΠ°Ρ ΡΠ°Π·Π½ΡΠΌ ΡΠ΅Π»ΡΠΌ. KeyStore Ρ ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ TrustStore β ΠΎ Π΄ΡΡΠ³ΠΈΡ , ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ Π΄ΠΎΠ²Π΅ΡΡΠ΅ΠΌ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ KeyStore. ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ javax.net.ssl.keyStore (ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°), javax.net.ssl.keyStoreType (ΡΠΈΠΏ) ΠΈ javax.net.ssl.keyStorePassword (ΠΏΠ°ΡΠΎΠ»Ρ). ΠΠΎΠ±Π°Π²ΠΎΡΠ½ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ, ΠΊΠ»Π°ΡΡΠΎΠΌ java.security.KeyStore.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΎΠ΄ΠΈΠ½ TrustStore, ΡΠ°ΠΉΠ» jre/lib/security/cacerts. ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ JVM javax.net.ssl.trustStore, javax.net.ssl.trustStorePassword ΠΈ javax.net.ssl.trustStorePassword.
Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ β ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ TrustStore Ρ ΡΠ°ΠΌΠΎΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠΌ SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ³Π»ΠΎ Ρ ΠΎΠ΄ΠΈΡΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠ°ΠΉΡ ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ HTTPS, Π½Π΅ ΠΏΡΠΎΠ²Π°Π»ΠΈΠ²Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΠΈΠ±ΠΎ ΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ KeyStore Ρ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΡΠΌ SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΠΊΠ°ΠΊ HTTPS-ΡΠ΅ΡΠ²Π΅Ρ.
Java Guruπ€ #java
π₯7π3β€2
ΠΠ°ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Ρ?
Π ΡΠ΅Π»ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π²Π΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠ°ΡΡΡΠΌ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½. Π Π΅ΡΠ΅Π½ΠΈΡ ΠΎ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Reflection API, ΠΈΠ»ΠΈ ΠΊ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
ΠΠ½ΡΡΡΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π°Π±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² check*(), ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π΅Π³ΠΈΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ checkPermission(). Π‘Π°ΠΌ Π΄ΠΎΡΡΡΠΏ, ΠΏΡΠ°Π²Π° Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ java.security.Permission. Π’Π°ΠΊ, Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Ρ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ checkRead. ΠΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π² checkPermission ΠΎΠ±ΡΠ΅ΠΊΡ FilePermission Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΠΉΠ»Π°.
ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° SecurityManager, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π½ΡΠΆΠ½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ System.setSecurityManager, ΠΈΠ»ΠΈ Π½Π° ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ»Π°Π³ΠΎΠΌ -Djava.security.manager. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½.
ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π±ΡΠ» Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π°ΠΏΠΏΠ»Π΅ΡΠΎΠ² β ΠΎΠ½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ Π΄Π°Π½Π½ΡΠΌ. Π‘Π΅ΠΉΡΠ°Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π°ΠΏΠΏΠ»Π΅ΡΠΎΠ² ΡΡΡΠ°ΡΠ΅Π»Π°, Π½ΠΎ SecurityManager ΠΎΡΡΠ°Π΅ΡΡΡ Π²ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ.
Java Guruπ€ #java
Π ΡΠ΅Π»ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π²Π΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠ°ΡΡΡΠΌ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½. Π Π΅ΡΠ΅Π½ΠΈΡ ΠΎ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Reflection API, ΠΈΠ»ΠΈ ΠΊ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
ΠΠ½ΡΡΡΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π°Π±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² check*(), ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π΅Π³ΠΈΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ checkPermission(). Π‘Π°ΠΌ Π΄ΠΎΡΡΡΠΏ, ΠΏΡΠ°Π²Π° Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ java.security.Permission. Π’Π°ΠΊ, Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Ρ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ checkRead. ΠΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π² checkPermission ΠΎΠ±ΡΠ΅ΠΊΡ FilePermission Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΠΉΠ»Π°.
ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° SecurityManager, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π½ΡΠΆΠ½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ System.setSecurityManager, ΠΈΠ»ΠΈ Π½Π° ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ»Π°Π³ΠΎΠΌ -Djava.security.manager. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½.
ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π±ΡΠ» Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π°ΠΏΠΏΠ»Π΅ΡΠΎΠ² β ΠΎΠ½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ Π΄Π°Π½Π½ΡΠΌ. Π‘Π΅ΠΉΡΠ°Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π°ΠΏΠΏΠ»Π΅ΡΠΎΠ² ΡΡΡΠ°ΡΠ΅Π»Π°, Π½ΠΎ SecurityManager ΠΎΡΡΠ°Π΅ΡΡΡ Π²ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ.
Java Guruπ€ #java
π₯9π3
ΠΠ°Ρ ΡΠ°ΡΠΈΠΊ Ρ Π²Π°ΠΊΠ°Π½ΡΠΈΡΠΌΠΈ ΠΈ ΡΠ΅Π·ΡΠΌΠ΅, ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΡ: https://t.iss.one/job_java
Telegram
Java Job - ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ ΠΈ ΡΠ΅Π·ΡΠΌΠ΅
ΠΠ°Ρ ΠΊΠ°Π½Π°Π» ΠΏΠΎ Java @javalib
ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ Java, ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠΈΠ΄ΡΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠ΅Π·ΡΠΌΠ΅!
ΠΡΠΏΠΈΡΡ Π·Π²ΡΠ·Π΄Ρ: @PremiumBot
ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ Java, ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠΈΠ΄ΡΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠ΅Π·ΡΠΌΠ΅!
ΠΡΠΏΠΈΡΡ Π·Π²ΡΠ·Π΄Ρ: @PremiumBot
π2π₯2
ΠΠ°ΠΊ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠ»ΡΡ?
KeyFactory β ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠ»Π°ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΊΠ»ΡΡΠ°ΠΌΠΈ. ΠΠ°Π±ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ°Π±ΡΠΈΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° SPI.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ: DSA, RSA, ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. Π‘ΡΡΠΎΠΊΠ°-Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠ°Π±ΡΠΈΠΊΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΏΡΠΈ Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ.
KeyFactory Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠ΅ΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠ»ΡΡΠ° Π² ΡΠ°ΠΌ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ, ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° KeySpec, β Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ»ΡΡΠ°. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° RSA.
Π‘Π°ΠΌΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ PublicKey ΠΈ PrivateKey β Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΈ ΠΎΠ±ΡΠ΅Π³ΠΎ Key.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΊΠ»ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌ ΠΊΠ»Π°ΡΡΡ-ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ².
Java Guruπ€ #java
KeyFactory β ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠ»Π°ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΊΠ»ΡΡΠ°ΠΌΠΈ. ΠΠ°Π±ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ°Π±ΡΠΈΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° SPI.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ: DSA, RSA, ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. Π‘ΡΡΠΎΠΊΠ°-Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠ°Π±ΡΠΈΠΊΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΏΡΠΈ Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ.
KeyFactory Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠ΅ΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠ»ΡΡΠ° Π² ΡΠ°ΠΌ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ, ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° KeySpec, β Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ»ΡΡΠ°. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° RSA.
Π‘Π°ΠΌΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ PublicKey ΠΈ PrivateKey β Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΈ ΠΎΠ±ΡΠ΅Π³ΠΎ Key.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΊΠ»ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌ ΠΊΠ»Π°ΡΡΡ-ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ².
Java Guruπ€ #java
π8π₯5β€4
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ°ΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ/ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ?
ΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΡΠ°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ Ρ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΈΡ ΡΡΠ΅Π½ΠΈΡ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π΄Π΅ΡΡ ΠΏΠΈΡΠ°Π»ΠΈ ΡΠ°Π½Π΅Π΅.
ΠΠ»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ KeyPairGenerator. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎ ΠΎΠ½ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΡΠΈΡΠ°ΡΡΡΡ ΠΊΠ»ΡΡΠΈ KeyFactory: ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· SPI, Π΄ΠΎΡΡΡΠΏ ΠΊ Π½ΠΈΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· getInstance.
ΠΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π½ΡΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ initialize ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΡΡΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°:
β’ ΠΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ»ΡΡΠ°;
β’ ΠΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΏΠ° SecureRandom;
β’ Π‘ΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° AlgorithmParameterSpec.
ΠΡΠ»ΠΈ ΠΊ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½, ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½Π΅ ΡΠΊΠ°Π·Π°Π½Π°, ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠΈΠΌΡΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄Π΅ΡΠΎΠ»ΡΡ.
Π‘Π°ΠΌ ΠΌΠ΅ΡΠΎΠ΄ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ generateKeyPair Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π·Π½ΡΡ ΠΏΠ°Ρ. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π° β ΠΎΠ±ΡΠ΅ΠΊΡ KeyPair, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΡΠΎ Ρ ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡΠΌΠΈ Π½Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ PrivateKey ΠΈ PublicKey ΠΏΠ°ΡΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠ² ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠ².
Java Guruπ€ #java
ΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΡΠ°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ Ρ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΈΡ ΡΡΠ΅Π½ΠΈΡ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π΄Π΅ΡΡ ΠΏΠΈΡΠ°Π»ΠΈ ΡΠ°Π½Π΅Π΅.
ΠΠ»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ KeyPairGenerator. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎ ΠΎΠ½ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΡΠΈΡΠ°ΡΡΡΡ ΠΊΠ»ΡΡΠΈ KeyFactory: ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· SPI, Π΄ΠΎΡΡΡΠΏ ΠΊ Π½ΠΈΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· getInstance.
ΠΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π½ΡΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ initialize ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΡΡΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°:
β’ ΠΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ»ΡΡΠ°;
β’ ΠΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΏΠ° SecureRandom;
β’ Π‘ΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° AlgorithmParameterSpec.
ΠΡΠ»ΠΈ ΠΊ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½, ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½Π΅ ΡΠΊΠ°Π·Π°Π½Π°, ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠΈΠΌΡΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄Π΅ΡΠΎΠ»ΡΡ.
Π‘Π°ΠΌ ΠΌΠ΅ΡΠΎΠ΄ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ generateKeyPair Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π·Π½ΡΡ ΠΏΠ°Ρ. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π° β ΠΎΠ±ΡΠ΅ΠΊΡ KeyPair, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΡΠΎ Ρ ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡΠΌΠΈ Π½Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ PrivateKey ΠΈ PublicKey ΠΏΠ°ΡΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠ² ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠ².
Java Guruπ€ #java
π₯6β€3π3
Π ΡΡΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ jar ΠΈ war?
jar ΠΈ war β ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎ-Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²-Π°ΡΡ ΠΈΠ²ΠΎΠ² Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎΠΌΠ΅ Π½ΠΈΡ Π΅ΡΡΡ Π΅ΡΠ΅ ΡΡΠ΅ΡΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ, ear. ΠΡΠ΅ ΡΡΠΈ ΡΠΎΡΠΌΠ°ΡΡ β Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΏΡΠΎΡΡΠΎ zip-Π°ΡΡ ΠΈΠ²Ρ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ°ΡΡΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ» Π² .zip, ΡΠ°Π·Π°ΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ, ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΡΠΎ Π²Π½ΡΡΡΠΈ.
JAR β Java Archive. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΉΠ»Ρ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ΅ΡΡΡΡΡ, Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Ρ. ΠΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΎΡΠΊΡ Π²Ρ ΠΎΠ΄Π°, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ΅Π»Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ java.
WAR β Web Archive. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΡ ΠΆΠ΅ ΡΡΡΡΠΊΡΡΡΡ, Π½ΠΎ Π΄ΡΡΠ³ΡΡ ΡΠΎΠ»Ρ β Π°ΡΡ ΠΈΠ² JavaEE web-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΠ±ΡΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ jar-Ρ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, JSP, ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΡΠΎΠ½Ρ-ΡΠ½Π΄Π°, ΠΈ ΠΌΠ΅ΡΠ°-ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΠ²Π»Π΅Ρ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (web.xml). Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½Ρ web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅ΡΠ²Π»Π΅Ρ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. Π‘ ΠΏΡΠΈΡ ΠΎΠ΄ΠΎΠΌ Servlet API 3.0 ΠΈ embedded-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π²ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΡΠΈΠ½ΡΡΠΎ Π·Π°ΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡ ΠΈ web-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² ΡΠ°ΠΌΠΎΠ΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠ΅ jar (ΠΠΎΠ·ΡΠ½Π³ Spring Boot: Make jar, not war).
EAR β Enterprise Archive. ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π½Π°ΡΠ°Π²ΡΠΈΡ ΠΊΠ°ΡΡΠ΅ΡΡ ΡΠΆΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π° Spring Framework, ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠΊΠ·ΠΎΡΠΈΡΠ½ΡΠΌ. ΠΡΠΎ ΡΠΎΠ±ΡΠ°Π½Π½ΠΎΠ΅ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΎΠ΅ JavaEE ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½ΡΠ° ΠΈ JavaEE ΠΌΠΎΠ΄ΡΠ»ΠΈ (Π²Π΅Π±-ΠΌΠΎΠ΄ΡΠ»ΠΈ, EJB, ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, Π°Π΄Π°ΠΏΡΠ΅ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ²). ΠΠ΅ΠΏΠ»ΠΎΠΈΡΡΡ Π² JavaEE Application Server.
ΠΡΠ΅ ΡΡΠΈ ΡΠΈΠΏΠ° ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ jar ΠΈΠ· JDK.
Java Guruπ€ #java
jar ΠΈ war β ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎ-Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²-Π°ΡΡ ΠΈΠ²ΠΎΠ² Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎΠΌΠ΅ Π½ΠΈΡ Π΅ΡΡΡ Π΅ΡΠ΅ ΡΡΠ΅ΡΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ, ear. ΠΡΠ΅ ΡΡΠΈ ΡΠΎΡΠΌΠ°ΡΡ β Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΏΡΠΎΡΡΠΎ zip-Π°ΡΡ ΠΈΠ²Ρ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ°ΡΡΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ» Π² .zip, ΡΠ°Π·Π°ΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ, ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΡΠΎ Π²Π½ΡΡΡΠΈ.
JAR β Java Archive. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΉΠ»Ρ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ΅ΡΡΡΡΡ, Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Ρ. ΠΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΎΡΠΊΡ Π²Ρ ΠΎΠ΄Π°, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ΅Π»Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ java.
WAR β Web Archive. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΡ ΠΆΠ΅ ΡΡΡΡΠΊΡΡΡΡ, Π½ΠΎ Π΄ΡΡΠ³ΡΡ ΡΠΎΠ»Ρ β Π°ΡΡ ΠΈΠ² JavaEE web-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΠ±ΡΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ jar-Ρ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, JSP, ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΡΠΎΠ½Ρ-ΡΠ½Π΄Π°, ΠΈ ΠΌΠ΅ΡΠ°-ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΠ²Π»Π΅Ρ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (web.xml). Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½Ρ web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅ΡΠ²Π»Π΅Ρ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. Π‘ ΠΏΡΠΈΡ ΠΎΠ΄ΠΎΠΌ Servlet API 3.0 ΠΈ embedded-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π²ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΡΠΈΠ½ΡΡΠΎ Π·Π°ΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡ ΠΈ web-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² ΡΠ°ΠΌΠΎΠ΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠ΅ jar (ΠΠΎΠ·ΡΠ½Π³ Spring Boot: Make jar, not war).
EAR β Enterprise Archive. ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π½Π°ΡΠ°Π²ΡΠΈΡ ΠΊΠ°ΡΡΠ΅ΡΡ ΡΠΆΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π° Spring Framework, ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠΊΠ·ΠΎΡΠΈΡΠ½ΡΠΌ. ΠΡΠΎ ΡΠΎΠ±ΡΠ°Π½Π½ΠΎΠ΅ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΎΠ΅ JavaEE ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½ΡΠ° ΠΈ JavaEE ΠΌΠΎΠ΄ΡΠ»ΠΈ (Π²Π΅Π±-ΠΌΠΎΠ΄ΡΠ»ΠΈ, EJB, ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, Π°Π΄Π°ΠΏΡΠ΅ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ²). ΠΠ΅ΠΏΠ»ΠΎΠΈΡΡΡ Π² JavaEE Application Server.
ΠΡΠ΅ ΡΡΠΈ ΡΠΈΠΏΠ° ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ jar ΠΈΠ· JDK.
Java Guruπ€ #java
π₯17β€6π3
ΠΠ°ΠΊ ΠΎΡΠ»Π°Π΄ΠΈΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅?
ΠΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Π΅, Π΅Π³ΠΎ ΠΏΠ°ΡΠ·Ρ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ, Π° Ρ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠ° Π½Π΅Ρ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Ρ ΠΎΡΡΡ, ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ»Π°Π΄ΠΊΠΈ β Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ remote debug. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Ρ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ»Π°Π΄ΠΊΠΈ JDWP. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΏΠΎΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ°. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΡΠΈΠ»ΠΈΡΠ° jdb, ΠΈΠ»ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π² IDE.
Π JDK ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Java Mission Control ΠΈ JConsole ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π΅Π³ΠΎ Π·Π΄ΠΎΡΠΎΠ²ΡΡ. ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ JVM, Π΄Π»Ρ HotSpot ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠ½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ², Π²ΡΠ΅Π³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΎΠ΄ΠΈΠ½ β Π»ΠΎΠ³Π°Ρ . ΠΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ Π²Π°ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠ±ΡΡΠΈΡΡ , ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ³ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΌ ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ.
Π ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΠΎΡΡΠ°Π²ΠΊΡ Java Π²ΠΊΠ»ΡΡΠ΅Π½ ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ Π»ΠΎΠ³Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ java.util.logging, ΠΏΠΎΠ·ΠΆΠ΅ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ Π½Π° Π½ΡΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅. Π’Π°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ΄ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ: Log4j, SLF4J, Logback.
Java Guruπ€ #java
ΠΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Π΅, Π΅Π³ΠΎ ΠΏΠ°ΡΠ·Ρ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ, Π° Ρ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠ° Π½Π΅Ρ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Ρ ΠΎΡΡΡ, ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ»Π°Π΄ΠΊΠΈ β Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ remote debug. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Ρ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ»Π°Π΄ΠΊΠΈ JDWP. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΏΠΎΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ°. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΡΠΈΠ»ΠΈΡΠ° jdb, ΠΈΠ»ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π² IDE.
Π JDK ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Java Mission Control ΠΈ JConsole ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π΅Π³ΠΎ Π·Π΄ΠΎΡΠΎΠ²ΡΡ. ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ JVM, Π΄Π»Ρ HotSpot ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠ½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ², Π²ΡΠ΅Π³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΎΠ΄ΠΈΠ½ β Π»ΠΎΠ³Π°Ρ . ΠΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ Π²Π°ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠ±ΡΡΠΈΡΡ , ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ³ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΌ ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ.
Π ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΠΎΡΡΠ°Π²ΠΊΡ Java Π²ΠΊΠ»ΡΡΠ΅Π½ ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ Π»ΠΎΠ³Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ java.util.logging, ΠΏΠΎΠ·ΠΆΠ΅ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ Π½Π° Π½ΡΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅. Π’Π°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ΄ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ: Log4j, SLF4J, Logback.
Java Guruπ€ #java
π9π₯5
π§ Π₯ΠΎΡΠ΅ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΊΠ°ΠΊ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΠΎΡ, Π° Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄? ΠΡΠΎΠ²Π΅ΡΡ, Π³ΠΎΡΠΎΠ² Π»ΠΈ ΡΡ!
Π¨Π°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° β Π±Π°Π·Π° Π΄Π»Ρ ΠΎΠΏΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΎΡΠ΅Ρ ΡΡΡΠΎΠΈΡΡ ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΡΠΎΠΉΠ΄ΠΈ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΡΡ, ΠΎΡΠ΅Π½ΠΈ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠΈ ΡΠΊΠΈΠ΄ΠΊΡ Π½Π° ΠΊΡΡΡ Β«ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΒ».
ΠΠ° ΠΊΡΡΡΠ΅ ΡΡ Π½Π°ΡΡΠΈΡΡΡΡ:
β ΠΡΠΈΠΌΠ΅Π½ΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠ΅ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ
β ΠΠ΅Π»ΠΈΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»ΠΎΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΡ
β ΠΡΡΠ»ΠΈΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ²
β ΠΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, ΠΏΠΎΠ½ΡΡΠ½ΡΡ Π±ΠΈΠ·Π½Π΅ΡΡ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π΅
π Π’Π΅ΡΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡ Π³ΠΎΡΠΎΠ² Π²ΡΠΉΡΠΈ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ.
πΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΡΡΡΠ° ΠΎΡΠΏΡΠ°Π²ΠΈΠΌ ΠΏΡΠΎΠΌΠΎΠΊΠΎΠ΄ ΡΠΎ ΡΠΊΠΈΠ΄ΠΊΠΎΠΉ ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ ΠΊΡΡΡ ΠΏΠΎ Git Π² Π·Π°ΠΏΠΈΡΠΈ
π ΠΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ
https://vk.cc/cMSKPm
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576
Π¨Π°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° β Π±Π°Π·Π° Π΄Π»Ρ ΠΎΠΏΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΎΡΠ΅Ρ ΡΡΡΠΎΠΈΡΡ ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΡΠΎΠΉΠ΄ΠΈ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΡΡ, ΠΎΡΠ΅Π½ΠΈ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠΈ ΡΠΊΠΈΠ΄ΠΊΡ Π½Π° ΠΊΡΡΡ Β«ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΒ».
ΠΠ° ΠΊΡΡΡΠ΅ ΡΡ Π½Π°ΡΡΠΈΡΡΡΡ:
β ΠΡΠΈΠΌΠ΅Π½ΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠ΅ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ
β ΠΠ΅Π»ΠΈΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»ΠΎΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΡ
β ΠΡΡΠ»ΠΈΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ²
β ΠΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, ΠΏΠΎΠ½ΡΡΠ½ΡΡ Π±ΠΈΠ·Π½Π΅ΡΡ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π΅
π Π’Π΅ΡΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡ Π³ΠΎΡΠΎΠ² Π²ΡΠΉΡΠΈ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ.
πΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΡΡΡΠ° ΠΎΡΠΏΡΠ°Π²ΠΈΠΌ ΠΏΡΠΎΠΌΠΎΠΊΠΎΠ΄ ΡΠΎ ΡΠΊΠΈΠ΄ΠΊΠΎΠΉ ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ ΠΊΡΡΡ ΠΏΠΎ Git Π² Π·Π°ΠΏΠΈΡΠΈ
π ΠΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ
https://vk.cc/cMSKPm
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576
β€4π2π₯2β€βπ₯1
ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ WEB-INF, Π° ΠΊΠΎΠ³Π΄Π° META-INF?
Π ΠΊΠΎΡΠ½Π΅ Π°ΡΡ ΠΈΠ²Π° java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ WEB-INF ΠΈ META-INF. ΠΠ±Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Ρ ΡΠ°Π½ΡΡ Π² ΡΠ΅Π±Π΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Ρ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΠΎΠ±ΡΡΠ½ΠΎ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅: yaml, xml, json, ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ.
META-INF ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π°ΡΡ ΠΈΠ²Π°Ρ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ². ΠΠ»Π°Π²Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΡΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ β MANIFEST.MF, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΡΠ°Π½Π΅Π΅. Π’Π°ΠΌ ΠΆΠ΅ Ρ ΡΠ°Π½ΡΡΡΡ
β’ ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ² SPI;
β’ ΠΠΎΠ΄ΠΏΠΈΡΡ Π°ΡΡ ΠΈΠ²Π°: ΡΠ°ΠΉΠ»Ρ .SF, .DSA, .RSA;
β’ INDEX.LIST Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°ΠΌΠΈ ΠΎ ΠΌΠ΅ΡΡΠΎΠ½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ°.
ΠΠ½ΠΎΠ³Π΄Π° (Π½Π΅ ΡΠ°ΡΡΠΎ) ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΡΠ΄Π° ΡΠ²ΠΎΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² classpath ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅.
WEB-INF ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² web-Π°ΡΡ ΠΈΠ²Π°Ρ (.war). ΠΠ½Π° Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ, Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅Ρ META-INF. Π Π½Π΅ΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ:
β’ ΠΠ»Π°Π²Π½ΡΠΉ ΡΠ°ΠΉΠ» web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ web.xml;
β’ ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ ΡΠ΅Π³ΠΎΠ² .TLD;
β’ ΠΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ classes/ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ;
β’ ΠΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ lib/ Ρ .jar-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ;
β’ ΠΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ tag/ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΠ΅Π³ΠΎΠ².
Java Guruπ€ #java
Π ΠΊΠΎΡΠ½Π΅ Π°ΡΡ ΠΈΠ²Π° java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ WEB-INF ΠΈ META-INF. ΠΠ±Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Ρ ΡΠ°Π½ΡΡ Π² ΡΠ΅Π±Π΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Ρ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΠΎΠ±ΡΡΠ½ΠΎ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅: yaml, xml, json, ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ.
META-INF ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π°ΡΡ ΠΈΠ²Π°Ρ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ². ΠΠ»Π°Π²Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΡΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ β MANIFEST.MF, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΡΠ°Π½Π΅Π΅. Π’Π°ΠΌ ΠΆΠ΅ Ρ ΡΠ°Π½ΡΡΡΡ
β’ ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ² SPI;
β’ ΠΠΎΠ΄ΠΏΠΈΡΡ Π°ΡΡ ΠΈΠ²Π°: ΡΠ°ΠΉΠ»Ρ .SF, .DSA, .RSA;
β’ INDEX.LIST Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°ΠΌΠΈ ΠΎ ΠΌΠ΅ΡΡΠΎΠ½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ°.
ΠΠ½ΠΎΠ³Π΄Π° (Π½Π΅ ΡΠ°ΡΡΠΎ) ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΡΠ΄Π° ΡΠ²ΠΎΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² classpath ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅.
WEB-INF ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² web-Π°ΡΡ ΠΈΠ²Π°Ρ (.war). ΠΠ½Π° Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ, Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅Ρ META-INF. Π Π½Π΅ΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ:
β’ ΠΠ»Π°Π²Π½ΡΠΉ ΡΠ°ΠΉΠ» web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ web.xml;
β’ ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ ΡΠ΅Π³ΠΎΠ² .TLD;
β’ ΠΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ classes/ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ;
β’ ΠΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ lib/ Ρ .jar-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ;
β’ ΠΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ tag/ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΠ΅Π³ΠΎΠ².
Java Guruπ€ #java
π7β€6π₯3
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΡΠ°ΡΡΠΈ API?
ΠΠ½ΠΎΠ³Π΄Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ Π² ΡΠΎΡΠΌΠ΅ Π·Π°Π΄Π°ΡΠΈ. ΠΠΎΠ³Π΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ ΠΊΡΡΠ³Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π½Π° Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ. Π’ΠΎ Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Π²Π΄ΡΡΠ³ ΠΏΡΠΎΠΏΠ°Π΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈ ΠΈΡ ΡΠ»Π΅Π½Ρ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π½Π΅ Π·Π°Ρ ΠΎΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ. Π’ΠΎΠ³Π΄Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ.
ΠΡΠΎ ΠΌΠ°ΡΡΡΠ°Π±Π½Π°Ρ ΠΈ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. Π Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ (deprecation).
Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ API ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Deprecated. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΎΠ½Π° Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ, Π½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎΠ»ΡΡΠΈΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΡΡΠ°ΡΠ΅Π» ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ.
Π Π°Π½Π΅Π΅ ΠΌΡ ΡΠΆΠ΅ ΠΏΠΈΡΠ°Π»ΠΈ ΠΎΠ± ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ @Deprecated. Π‘ΠΎΠ±ΠΈΡΠ°ΡΡΡ ΡΠ΄Π°Π»ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ API, Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΠΎΡΠΌΠ΅ΡΠΈΡΡ Π΅Π³ΠΎ @Deprecated(forRemoval=true).
ΠΠ±ΡΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°ΠΏΠ°Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ. ΠΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Deprecation policy β Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄Π°ΡΡ ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠ΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (ΠΈΠ»ΠΈ Π²Π΅ΡΡΠΈΠΉ) ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ @Deprecated ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²ΡΡ Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½.
ΠΠ»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π² ΠΊΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ deprecated ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ JDK ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠΈΠ»ΠΈΡΡ jdeprscan. Π£ΡΠΈΠ»ΠΈΡΠ° javadoc ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ deprecated-list.html.
Java Guruπ€ #java
ΠΠ½ΠΎΠ³Π΄Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ Π² ΡΠΎΡΠΌΠ΅ Π·Π°Π΄Π°ΡΠΈ. ΠΠΎΠ³Π΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ ΠΊΡΡΠ³Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π½Π° Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ. Π’ΠΎ Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Π²Π΄ΡΡΠ³ ΠΏΡΠΎΠΏΠ°Π΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈ ΠΈΡ ΡΠ»Π΅Π½Ρ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π½Π΅ Π·Π°Ρ ΠΎΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ. Π’ΠΎΠ³Π΄Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ.
ΠΡΠΎ ΠΌΠ°ΡΡΡΠ°Π±Π½Π°Ρ ΠΈ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. Π Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ (deprecation).
Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ API ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Deprecated. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΎΠ½Π° Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ, Π½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎΠ»ΡΡΠΈΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΡΡΠ°ΡΠ΅Π» ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ.
Π Π°Π½Π΅Π΅ ΠΌΡ ΡΠΆΠ΅ ΠΏΠΈΡΠ°Π»ΠΈ ΠΎΠ± ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ @Deprecated. Π‘ΠΎΠ±ΠΈΡΠ°ΡΡΡ ΡΠ΄Π°Π»ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ API, Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΠΎΡΠΌΠ΅ΡΠΈΡΡ Π΅Π³ΠΎ @Deprecated(forRemoval=true).
ΠΠ±ΡΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°ΠΏΠ°Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ. ΠΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Deprecation policy β Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄Π°ΡΡ ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠ΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (ΠΈΠ»ΠΈ Π²Π΅ΡΡΠΈΠΉ) ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ @Deprecated ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²ΡΡ Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½.
ΠΠ»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π² ΠΊΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ deprecated ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ JDK ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠΈΠ»ΠΈΡΡ jdeprscan. Π£ΡΠΈΠ»ΠΈΡΠ° javadoc ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ deprecated-list.html.
Java Guruπ€ #java
π12π₯6
ΠΠ°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ±ΡΠ°ΡΡ?
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠ°Π²ΡΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π΅-ΡΠ°ΠΊΡΠΎ, Π² Ρ ΡΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ:
β’ java.util.Logging ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
β’ Log4j (deprecated)
β’ Logback
β’ Log4j 2
ΠΡΠ΅ ΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΡΠΈ: ΡΡΠΎΠ²Π½ΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΡΡΠΎ ΠΏΠΈΡΠ°ΡΡ), ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Ρ ΡΠ½Π΄Π»Π΅ΡΡ (ΠΊΡΠ΄Π° ΠΏΠΈΡΠ°ΡΡ), ΡΠΎΡΠΌΠ°ΡΡ (ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ). Π Π°Π·Π²ΠΈΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ»ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π² Π½ΡΠ°Π½ΡΠ°Ρ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· Π½ΠΈΡ ΡΡΠΈΡΡΠ²Π°Π»Π° ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ, ΡΠΎΡ ΡΠ°Π½ΡΡ Π΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°. ΠΠ±ΡΡΠ½ΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠ°ΠΌΡΠ΅ ΡΠ²Π΅ΠΆΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ β Logback ΠΈ Log4j 2.
ΠΠ»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ-ΡΠ°ΡΠ°Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ΄ ΠΎΠ±ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ:
β’ SLF4j
β’ Apache Commons Logging (JCL)
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ bridge-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ½ΠΈ ΠΌΠ°ΡΠΊΠΈΡΡΡΡ ΠΎΠ΄Π½Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄ΡΡΠ³ΠΎΠΉ. Π‘ ΠΈΡ ΠΏΠΎΠΌΠΎΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅ΡΡΠΈΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΠ°Π·Π½ΡΡ ΡΠ°ΡΠ°Π΄ΠΎΠ², ΠΈΠ»ΠΈ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π²ΠΎΠ²ΡΠ΅ Π±Π΅Π· ΡΠ°ΡΠ°Π΄ΠΎΠ².
Java Guruπ€ #java
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠ°Π²ΡΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π΅-ΡΠ°ΠΊΡΠΎ, Π² Ρ ΡΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ:
β’ java.util.Logging ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
β’ Log4j (deprecated)
β’ Logback
β’ Log4j 2
ΠΡΠ΅ ΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΡΠΈ: ΡΡΠΎΠ²Π½ΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΡΡΠΎ ΠΏΠΈΡΠ°ΡΡ), ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Ρ ΡΠ½Π΄Π»Π΅ΡΡ (ΠΊΡΠ΄Π° ΠΏΠΈΡΠ°ΡΡ), ΡΠΎΡΠΌΠ°ΡΡ (ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ). Π Π°Π·Π²ΠΈΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ»ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π² Π½ΡΠ°Π½ΡΠ°Ρ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· Π½ΠΈΡ ΡΡΠΈΡΡΠ²Π°Π»Π° ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ, ΡΠΎΡ ΡΠ°Π½ΡΡ Π΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°. ΠΠ±ΡΡΠ½ΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠ°ΠΌΡΠ΅ ΡΠ²Π΅ΠΆΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ β Logback ΠΈ Log4j 2.
ΠΠ»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ-ΡΠ°ΡΠ°Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ΄ ΠΎΠ±ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ:
β’ SLF4j
β’ Apache Commons Logging (JCL)
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ bridge-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ½ΠΈ ΠΌΠ°ΡΠΊΠΈΡΡΡΡ ΠΎΠ΄Π½Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄ΡΡΠ³ΠΎΠΉ. Π‘ ΠΈΡ ΠΏΠΎΠΌΠΎΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅ΡΡΠΈΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΠ°Π·Π½ΡΡ ΡΠ°ΡΠ°Π΄ΠΎΠ², ΠΈΠ»ΠΈ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π²ΠΎΠ²ΡΠ΅ Π±Π΅Π· ΡΠ°ΡΠ°Π΄ΠΎΠ².
Java Guruπ€ #java
π9β€5π₯5
ΠΠ°ΠΊ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°?
ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ ΠΆΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π»ΡΡΡΠ΅Π΅ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π³ΠΎΡΠΎΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π²ΡΠ±ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ ΡΠ΅ΡΡΠΎΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅. Π’Π°ΠΊΠΈΠ΅ ΡΠ΅ΡΡΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ benchmark.
ΠΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π² Π³ΠΎΠ»ΠΎΠ²Ρ β ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π΄ΠΎ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄, ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΡΠ»ΠΎ. Π£ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π΅ΡΡΡ ΡΡΠ΄ Π½ΡΠ°Π½ΡΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π°ΠΌΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ. Π ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ ΠΎΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° Π±ΡΠ΄Π΅Ρ Β«ΠΏΡΠΎΠ³ΡΠ΅ΡΠΎΠΉΒ»: Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΊΡΡΠΈ, ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ JIT-ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π³ΠΎΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΠ°ΠΌΡΡΡ Π½Π°ΠΏΠΎΠ»Π½ΠΈΡΡΡ ΠΌΡΡΠΎΡΠΎΠΌ.
ΠΠ°ΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄ΠΎΠ»Π³ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ: Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°, ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π½Π° ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΠΎΠΌ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΌ ΡΡΠ΅Π½Π΄Π΅. ΠΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΡΡΠΊΠΎΠ² Java ΠΊΠΎΠ΄Π° (Π² ΠΌΠΈΠΊΡΠΎΠ±Π΅Π½ΡΠΌΠ°ΡΠΊΠ°Ρ ) Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π½ΡΠ°Π½ΡΡ Π²Π½ΠΎΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²ΠΊΠ»Π°Π΄ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
Π‘Π°ΠΌΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΈΠ· JDK, JMH. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π° ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Benchmark. Π’Π΅ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ jar-ΡΠ°ΠΉΠ»Π°, Π»ΠΈΠ±ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΡΠΎΠ³ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ΄ΡΡ Π²ΡΠ²Π΅Π΄Π΅Π½Ρ Π² Π²ΠΈΠ΄Π΅ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ.
Java Guruπ€ #java
ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ ΠΆΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π»ΡΡΡΠ΅Π΅ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π³ΠΎΡΠΎΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π²ΡΠ±ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ ΡΠ΅ΡΡΠΎΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅. Π’Π°ΠΊΠΈΠ΅ ΡΠ΅ΡΡΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ benchmark.
ΠΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π² Π³ΠΎΠ»ΠΎΠ²Ρ β ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π΄ΠΎ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄, ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΡΠ»ΠΎ. Π£ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π΅ΡΡΡ ΡΡΠ΄ Π½ΡΠ°Π½ΡΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π°ΠΌΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ. Π ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ ΠΎΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° Π±ΡΠ΄Π΅Ρ Β«ΠΏΡΠΎΠ³ΡΠ΅ΡΠΎΠΉΒ»: Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΊΡΡΠΈ, ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ JIT-ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π³ΠΎΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΠ°ΠΌΡΡΡ Π½Π°ΠΏΠΎΠ»Π½ΠΈΡΡΡ ΠΌΡΡΠΎΡΠΎΠΌ.
ΠΠ°ΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄ΠΎΠ»Π³ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ: Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°, ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π½Π° ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΠΎΠΌ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΌ ΡΡΠ΅Π½Π΄Π΅. ΠΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΡΡΠΊΠΎΠ² Java ΠΊΠΎΠ΄Π° (Π² ΠΌΠΈΠΊΡΠΎΠ±Π΅Π½ΡΠΌΠ°ΡΠΊΠ°Ρ ) Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π½ΡΠ°Π½ΡΡ Π²Π½ΠΎΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²ΠΊΠ»Π°Π΄ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
Π‘Π°ΠΌΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΈΠ· JDK, JMH. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π° ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Benchmark. Π’Π΅ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ jar-ΡΠ°ΠΉΠ»Π°, Π»ΠΈΠ±ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΡΠΎΠ³ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ΄ΡΡ Π²ΡΠ²Π΅Π΄Π΅Π½Ρ Π² Π²ΠΈΠ΄Π΅ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ.
Java Guruπ€ #java
π10β€6π₯5
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ phase, goal ΠΈ lifecycle Π² Maven?
Phase β Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°Π³ΠΈ ΠΈΠ·, ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΡΠΎΠΈΡ lifecycle Π² Maven. ΠΠΎΠΎΠ±ΡΠ΅, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΡ ΡΠΈΠΊΠ»Π°:
β’ Clean β ΡΠ°Π·Ρ pre-clean, clean, post-clean;
β’ Default β validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy;
β’ Site β pre-site, site, post-site, site-deploy.
Goal β ΡΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΠ»Π°Π³ΠΈΠ½ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΈ Π³ΠΎΠ»Ρ ΠΊ ΡΠ°Π·Π°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ mvn clean, ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ Π΄Π΅Π»Π°Π΅Ρ Π½Π΅ ΡΠ°ΠΌΠ° ΡΠ°Π·Π° clean, Π° ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½Π°Ρ ΠΊ Π½Π΅ΠΉ ΡΠ΅Π»Ρ clean:clean ΠΈΠ· Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ maven-clean-plugin.
ΠΠΎΠ³Π΄Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ mvn ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠ°Π·Π°, ΠΊΡΠΎΠΌΠ΅ Π½Π΅Π΅ ΡΠ°ΠΌΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡ Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ Π΅ΠΉ Π² ΡΠΎΠΌ ΠΆΠ΅ Π»Π°ΠΉΡΡΠ°ΠΉΠΊΠ»Π΅. ΠΠΌΠ΅ΡΡΠΎ ΡΠ°Π·Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠ΅Π»Ρ (mvn clean:clean Π²ΠΌΠ΅ΡΡΠΎ mvn clean), Π½ΠΎ ΡΠΎΠ³Π΄Π° Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅Π»ΠΈ Π²ΡΠ·Π²Π°Π½Ρ Π½Π΅ Π±ΡΠ΄ΡΡ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ΅Π»ΠΈ ΡΠ°Π·Ρ pre-clean).
Π€Π°Π·Ρ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΡΠ»Π΅Π΄ΡΡΡ Π² ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅. ΠΡΠ»ΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°Π·Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»Π΅ΠΉ, ΠΎΠ½ΠΈ ΠΎΡΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π² pom.xml.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ ΠΌΠΎΠ³ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ΅Π»ΠΈ, Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Π½ΠΈ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ ΡΠ°Π·Π°ΠΌ. ΠΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ²Π½ΠΎ.
ΠΡΠ»ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ mvn ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·/ΡΠ΅Π»Π΅ΠΉ, ΠΎΠ½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΠ΅Π»Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ.
Π’Π°ΠΊ, Π²ΡΠ·ΠΎΠ² mvn test package β ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΡΠΎ mvn package, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ΅ ΡΠ΅Π»ΠΈ ΠΈΠ· ΡΠ°Π·Ρ test (ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ) ΡΠΆΠ΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΈ ΠΏΡΠΎΠΏΡΡΠ΅Π½Ρ Π² package. mvn clean install ΡΠ°ΠΊ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΡΠ°Π·Ρ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ².
Java Guruπ€ #java
Phase β Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°Π³ΠΈ ΠΈΠ·, ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΡΠΎΠΈΡ lifecycle Π² Maven. ΠΠΎΠΎΠ±ΡΠ΅, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΡ ΡΠΈΠΊΠ»Π°:
β’ Clean β ΡΠ°Π·Ρ pre-clean, clean, post-clean;
β’ Default β validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy;
β’ Site β pre-site, site, post-site, site-deploy.
Goal β ΡΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΠ»Π°Π³ΠΈΠ½ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΈ Π³ΠΎΠ»Ρ ΠΊ ΡΠ°Π·Π°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ mvn clean, ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ Π΄Π΅Π»Π°Π΅Ρ Π½Π΅ ΡΠ°ΠΌΠ° ΡΠ°Π·Π° clean, Π° ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½Π°Ρ ΠΊ Π½Π΅ΠΉ ΡΠ΅Π»Ρ clean:clean ΠΈΠ· Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ maven-clean-plugin.
ΠΠΎΠ³Π΄Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ mvn ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠ°Π·Π°, ΠΊΡΠΎΠΌΠ΅ Π½Π΅Π΅ ΡΠ°ΠΌΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡ Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ Π΅ΠΉ Π² ΡΠΎΠΌ ΠΆΠ΅ Π»Π°ΠΉΡΡΠ°ΠΉΠΊΠ»Π΅. ΠΠΌΠ΅ΡΡΠΎ ΡΠ°Π·Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠ΅Π»Ρ (mvn clean:clean Π²ΠΌΠ΅ΡΡΠΎ mvn clean), Π½ΠΎ ΡΠΎΠ³Π΄Π° Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅Π»ΠΈ Π²ΡΠ·Π²Π°Π½Ρ Π½Π΅ Π±ΡΠ΄ΡΡ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ΅Π»ΠΈ ΡΠ°Π·Ρ pre-clean).
Π€Π°Π·Ρ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΡΠ»Π΅Π΄ΡΡΡ Π² ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅. ΠΡΠ»ΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°Π·Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»Π΅ΠΉ, ΠΎΠ½ΠΈ ΠΎΡΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π² pom.xml.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ ΠΌΠΎΠ³ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ΅Π»ΠΈ, Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Π½ΠΈ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ ΡΠ°Π·Π°ΠΌ. ΠΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ²Π½ΠΎ.
ΠΡΠ»ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ mvn ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·/ΡΠ΅Π»Π΅ΠΉ, ΠΎΠ½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΠ΅Π»Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ.
Π’Π°ΠΊ, Π²ΡΠ·ΠΎΠ² mvn test package β ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΡΠΎ mvn package, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ΅ ΡΠ΅Π»ΠΈ ΠΈΠ· ΡΠ°Π·Ρ test (ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ) ΡΠΆΠ΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΈ ΠΏΡΠΎΠΏΡΡΠ΅Π½Ρ Π² package. mvn clean install ΡΠ°ΠΊ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΡΠ°Π·Ρ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ².
Java Guruπ€ #java
π₯11π9β€3
ΠΠ°ΠΊ Spring Framework ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΏΠ°ΡΡΠ΅ΡΠ½ Dependency Injection?
ΠΠ½Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ (inversion of control, IoC) β ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΡ. Π£ΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΈ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ. ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΠ·Π±Π°Π²Π»ΡΠ΅Ρ ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π½Π°ΡΡ ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΌΠΎΠ΄ΡΠ»ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π΄Π΅ΡΠ°Π»ΡΡ ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ΅ΡΠ΅ΠΈΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΌ, ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠ²ΡΠ·Π½ΠΎΡΡΡ.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (Dependency Injection, DI) β ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ IoC. ΠΡΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅Ρ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡΠΌΠΈ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ DI β ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΈ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΠΈΡ Π² IoC-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ½ΠΎΡΡΡ, Service Locator, Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΏΠΎΠΈΡΠΊΠΎΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡΠΌ ΠΈ ΠΈΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ΠΌ.
Spring β Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. DI ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ β Spring IoC.
Π‘ΡΡΠ½ΠΎΡΡΠΈ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ Π² Spring, ΠΊΠ°ΠΊ ΠΈ Π² JavaEE Π½Π°Π·ΡΠ²Π°ΡΡΡΡ beans. ΠΠΈΠ½Ρ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ, ΠΊΠΎΡΠ½ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΈΠ· Π½ΠΈΡ Π»Π΅ΠΆΠ°Ρ Π² ΠΏΠΎΠ½ΡΡΠΈΠΈ Configuration. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π±ΠΈΠ½ΠΎΠ² Π²ΡΡΡΡΠΏΠ°Π΅Ρ ApplicationContext. Π§ΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ, ΠΎΠ½Π° ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Autowired.
Java Guruπ€ #java
ΠΠ½Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ (inversion of control, IoC) β ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΡ. Π£ΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΈ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ. ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΠ·Π±Π°Π²Π»ΡΠ΅Ρ ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π½Π°ΡΡ ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΌΠΎΠ΄ΡΠ»ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π΄Π΅ΡΠ°Π»ΡΡ ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ΅ΡΠ΅ΠΈΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΌ, ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠ²ΡΠ·Π½ΠΎΡΡΡ.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (Dependency Injection, DI) β ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ IoC. ΠΡΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅Ρ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡΠΌΠΈ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ DI β ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΈ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΠΈΡ Π² IoC-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ½ΠΎΡΡΡ, Service Locator, Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΏΠΎΠΈΡΠΊΠΎΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡΠΌ ΠΈ ΠΈΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ΠΌ.
Spring β Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. DI ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ β Spring IoC.
Π‘ΡΡΠ½ΠΎΡΡΠΈ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ Π² Spring, ΠΊΠ°ΠΊ ΠΈ Π² JavaEE Π½Π°Π·ΡΠ²Π°ΡΡΡΡ beans. ΠΠΈΠ½Ρ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ, ΠΊΠΎΡΠ½ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΈΠ· Π½ΠΈΡ Π»Π΅ΠΆΠ°Ρ Π² ΠΏΠΎΠ½ΡΡΠΈΠΈ Configuration. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π±ΠΈΠ½ΠΎΠ² Π²ΡΡΡΡΠΏΠ°Π΅Ρ ApplicationContext. Π§ΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ, ΠΎΠ½Π° ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Autowired.
Java Guruπ€ #java
π10β€3π₯3
ΠΠΎΠ³Π΄Π° ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅ Ρ
ΠΎΡΡΡ Β«Π΄ΡΡΠΆΠΈΡΡΒ» ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ β Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π³ΠΎΠ»ΠΎΠ²Π½Π°Ρ Π±ΠΎΠ»Ρ.π«
ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π»ΠΈΡΠ½Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠΈΠ»Ρ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Ρ Apache Kafka?
ΠΡΠ²Π΅Ρ β Kafka Connect.
ΠΠ°ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° ΠΎΡΠΊΡΡΡΡΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ, Π³Π΄Π΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ΅ΡΠΈΡΡ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ Π½Π° Π²Π΅Π±ΠΈΠ½Π°ΡΠ΅:
βοΈΠΡΠ½ΠΎΠ²Ρ Kafka Connect: ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΡ, ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡΡ
βοΈΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ: ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡΠΎΠ² Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ
βοΈΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅: ΠΠ°ΠΊ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ Kafka Connect
23 ΠΈΡΠ½Ρ Π² 19:00 (ΠΠ‘Π) β ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ!
Π‘ΠΏΠΈΠΊΠ΅Ρ: ΠΠ°Π»Π΅Π½ΡΠΈΠ½ Π¨ΠΈΠ»ΠΈΠ½ β Π‘ΡΠ°ΡΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΈ Π°Π½Π°Π»ΠΈΡΠΈΠΊ Π΄Π°Π½Π½ΡΡ Π² Deutsche Telekom IT GmbH
ΠΠ°ΡΠΈΠΌ ΡΠ΅ΠΊ-Π»ΠΈΡΡ ΠΏΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Kafka Connect ΠΏΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π½Π° Π²Π΅Π±ΠΈΠ½Π°Ρ!
ΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ Π½Π°ΡΡΠΈΡΡΡΡ ΡΠΏΡΠΎΡΠ°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ ΡΠ²ΠΎΠΈΡ ΡΠΈΡΡΠ΅ΠΌ: https://tglink.io/304568797215
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ "ΠΠ’Π£Π‘ ΠΠΠΠΠΠ-ΠΠΠ ΠΠΠΠΠΠΠΠ". ΠΠΠ 9705100963. erid: 2W5zFHAhiVN
ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π»ΠΈΡΠ½Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠΈΠ»Ρ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Ρ Apache Kafka?
ΠΡΠ²Π΅Ρ β Kafka Connect.
ΠΠ°ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° ΠΎΡΠΊΡΡΡΡΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ, Π³Π΄Π΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ΅ΡΠΈΡΡ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ Π½Π° Π²Π΅Π±ΠΈΠ½Π°ΡΠ΅:
βοΈΠΡΠ½ΠΎΠ²Ρ Kafka Connect: ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΡ, ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡΡ
βοΈΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ: ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡΠΎΠ² Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ
βοΈΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅: ΠΠ°ΠΊ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ Kafka Connect
23 ΠΈΡΠ½Ρ Π² 19:00 (ΠΠ‘Π) β ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ!
Π‘ΠΏΠΈΠΊΠ΅Ρ: ΠΠ°Π»Π΅Π½ΡΠΈΠ½ Π¨ΠΈΠ»ΠΈΠ½ β Π‘ΡΠ°ΡΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΈ Π°Π½Π°Π»ΠΈΡΠΈΠΊ Π΄Π°Π½Π½ΡΡ Π² Deutsche Telekom IT GmbH
ΠΠ°ΡΠΈΠΌ ΡΠ΅ΠΊ-Π»ΠΈΡΡ ΠΏΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Kafka Connect ΠΏΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π½Π° Π²Π΅Π±ΠΈΠ½Π°Ρ!
ΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ Π½Π°ΡΡΠΈΡΡΡΡ ΡΠΏΡΠΎΡΠ°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ ΡΠ²ΠΎΠΈΡ ΡΠΈΡΡΠ΅ΠΌ: https://tglink.io/304568797215
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ "ΠΠ’Π£Π‘ ΠΠΠΠΠΠ-ΠΠΠ ΠΠΠΠΠΠΠΠ". ΠΠΠ 9705100963. erid: 2W5zFHAhiVN
β€3π2π₯2
ΠΠ°ΠΊΠΎΠΉ Ρ Spring Π±ΠΈΠ½ΠΎΠ² ΡΠΊΠΎΡΠΏ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ?
Π Spring Framework Π²ΠΎ Π²ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΡ Π±ΠΈΠ·Π½Π΅Ρ-ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ (bean) ΡΠ²Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠ²Π½ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π°ΡΡΠΈΠ±ΡΡ scope. Π Java-ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΎΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ @Scope, Π² xml β Π² Π°ΡΡΠΈΠ±ΡΡΠ΅ scope ΡΠ΅Π³Π° <bean>.
ΠΡΡΠΈΠ±ΡΡ scope β ΡΡΠΎ ΡΡΡΠΎΠΊΠ°-ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ°Π²ΠΈΡ Π±ΠΈΠ½Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° org.springframework.beans.factory.config.Scope. Π‘ΠΊΠΎΡΠΏ β ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΡΡΠ΅ΡΠ½Π° Β«ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΒ» Π΄Π»Ρ ΡΠ°Π±ΡΠΈΠΊ Π±ΠΈΠ½ΠΎΠ², ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
Π ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ Spring-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²ΡΠ΅Π³Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° ΡΠΎΠΊΠΎΡΠΏΠ°:
β’ singleton β ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ, ΠΏΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ. ΠΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΠ»ΡΡΠ°Π΅Π²: ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±Π΅Π· ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π‘ΡΠΎΠΈΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π½Π΅ ΠΊΠ»Π°ΡΡ-ΡΠΈΠ½Π³Π»ΡΠΎΠ½: ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π΄Π²ΡΡ Π±ΠΈΠ½ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² Π±ΡΠ΄Π΅Ρ Π΄Π²Π°. ΠΡΠΎ ΡΠΊΠΎΡΠΏ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
β’ prototype β ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠΈ ΡΠ°Π±ΡΠΈΠΊΠ° Π±ΠΈΠ½ΠΎΠ² ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΡΠΆΠ΅Π½ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π±ΠΈΠ½ΠΎΠ² Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ.
Spring Web Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ 4 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΊΠΎΡΠΏΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π±ΠΈΠ½ ΡΠΈΠ½Π³Π»ΡΠΎΠ½ΠΎΠΌ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° (request), ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ (session), ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΠ΅ΡΠ²Π»Π΅ΡΠ° (application) ΠΈ Π²Π΅Π±ΡΠΎΠΊΠ΅Ρ-ΡΠ΅ΡΡΠΈΠΈ (websocket).
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΊΠΎΡΠΏΡ. ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΠ°ΠΌΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°Ρ Spring: SimpleThreadScope, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅Π»Π°Π΅Ρ Π±ΠΈΠ½ ΡΡΠ΅Π΄-Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ. ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΅Π³ΠΎ, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠΊΠΎΡΠΏΡ, Π½ΡΠΆΠ½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² BeanFactory.
Java Guruπ€ #java
Π Spring Framework Π²ΠΎ Π²ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΡ Π±ΠΈΠ·Π½Π΅Ρ-ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ (bean) ΡΠ²Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠ²Π½ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π°ΡΡΠΈΠ±ΡΡ scope. Π Java-ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΎΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ @Scope, Π² xml β Π² Π°ΡΡΠΈΠ±ΡΡΠ΅ scope ΡΠ΅Π³Π° <bean>.
ΠΡΡΠΈΠ±ΡΡ scope β ΡΡΠΎ ΡΡΡΠΎΠΊΠ°-ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ°Π²ΠΈΡ Π±ΠΈΠ½Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° org.springframework.beans.factory.config.Scope. Π‘ΠΊΠΎΡΠΏ β ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΡΡΠ΅ΡΠ½Π° Β«ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΒ» Π΄Π»Ρ ΡΠ°Π±ΡΠΈΠΊ Π±ΠΈΠ½ΠΎΠ², ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
Π ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ Spring-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²ΡΠ΅Π³Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° ΡΠΎΠΊΠΎΡΠΏΠ°:
β’ singleton β ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ, ΠΏΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ. ΠΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΠ»ΡΡΠ°Π΅Π²: ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±Π΅Π· ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π‘ΡΠΎΠΈΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π½Π΅ ΠΊΠ»Π°ΡΡ-ΡΠΈΠ½Π³Π»ΡΠΎΠ½: ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π΄Π²ΡΡ Π±ΠΈΠ½ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² Π±ΡΠ΄Π΅Ρ Π΄Π²Π°. ΠΡΠΎ ΡΠΊΠΎΡΠΏ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
β’ prototype β ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠΈ ΡΠ°Π±ΡΠΈΠΊΠ° Π±ΠΈΠ½ΠΎΠ² ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΡΠΆΠ΅Π½ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π±ΠΈΠ½ΠΎΠ² Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ.
Spring Web Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ 4 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΊΠΎΡΠΏΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π±ΠΈΠ½ ΡΠΈΠ½Π³Π»ΡΠΎΠ½ΠΎΠΌ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° (request), ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ (session), ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΠ΅ΡΠ²Π»Π΅ΡΠ° (application) ΠΈ Π²Π΅Π±ΡΠΎΠΊΠ΅Ρ-ΡΠ΅ΡΡΠΈΠΈ (websocket).
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΊΠΎΡΠΏΡ. ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΠ°ΠΌΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°Ρ Spring: SimpleThreadScope, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅Π»Π°Π΅Ρ Π±ΠΈΠ½ ΡΡΠ΅Π΄-Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ. ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΅Π³ΠΎ, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠΊΠΎΡΠΏΡ, Π½ΡΠΆΠ½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² BeanFactory.
Java Guruπ€ #java
β€8π4π₯4π3
π ΠΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π°ΡΡ
ΠΈΠ²Π°ΡΠΈΠΈ: LZ77/78
ΠΡΠΈΠ³Π»Π°ΡΠ°Π΅ΠΌ Π½Π° ΠΎΡΠΊΡΡΡΡΠΉ ΡΡΠΎΠΊ.
π 25 ΠΈΡΠ½Ρ Π² 20:00 ΠΠ‘Π
π ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ. Π£ΡΠΎΠΊ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΠ°ΡΡΠ° ΠΊΡΡΡΠ° Β«ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Β».
βοΈ ΠΠ° ΡΡΠΎΠΌ Π²Π΅Π±ΠΈΠ½Π°ΡΠ΅ ΠΌΡ Π·Π°Π²Π΅ΡΡΠΈΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°ΡΡ
ΠΈΠ²Π°ΡΠΎΡΠ°, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π°Π»Π³ΠΎΡΠΈΡΠΌ LZ77/78. Π Π°Π·Π±Π΅ΡΠ΅ΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ»ΠΎΠ²Π°ΡΠ½ΠΎΠ³ΠΎ ΡΠΆΠ°ΡΠΈΡ, ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ
ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΈ ΡΠΎΡΠΌΠ°Ρ ΠΈΡ
ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
βοΈ ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅ΠΌ ΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
ΡΡΠ΅Ρ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠΆΠ°ΡΠΈΡ (RLE, Huffman, LZ77/78). ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π»ΡΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ.
ΠΠ°Π²Π΅ΡΡΠ°ΡΡΠ΅Π΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π°Π½ΡΡΠΈΠ΅ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Ρ ΠΎΡΠ΅Ρ ΠΎΡΠ²ΠΎΠΈΡΡ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅.ββββββββββββββββ
π ΠΡΠ΅ΠΌ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌ Π²Π΅Π±ΠΈΠ½Π°ΡΠ° Π΄Π°ΡΠΈΠΌ ΠΏΡΠΎΠΌΠΎΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π°Π΅Ρ ΡΠΊΠΈΠ΄ΠΊΡ Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ - Algo5
π Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π½Π° Π²Π΅Π±ΠΈΠ½Π°Ρ: https://vk.cc/cMY8Lf
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576
ΠΡΠΈΠ³Π»Π°ΡΠ°Π΅ΠΌ Π½Π° ΠΎΡΠΊΡΡΡΡΠΉ ΡΡΠΎΠΊ.
π 25 ΠΈΡΠ½Ρ Π² 20:00 ΠΠ‘Π
π ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ. Π£ΡΠΎΠΊ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΠ°ΡΡΠ° ΠΊΡΡΡΠ° Β«ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Β».
ΠΠ°Π²Π΅ΡΡΠ°ΡΡΠ΅Π΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π°Π½ΡΡΠΈΠ΅ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Ρ ΠΎΡΠ΅Ρ ΠΎΡΠ²ΠΎΠΈΡΡ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅.ββββββββββββββββ
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
β€2π2π₯2
ΠΠ°ΠΊΠΈΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ @β Component, @β Service, @β Repository ΠΈ @β Controller?
@Component β ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Spring-Π±ΠΈΠ½Π°. ΠΠ· Π²ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΏΠ°Π»ΠΈ Π² ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π·Π½Π°Π΅Ρ @ComponentScan), Π±ΡΠ΄ΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ Π±ΠΈΠ½-Π΄Π΅ΡΠΈΠ½ΠΈΡΠ½Ρ.
ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ β ΡΡΠΎ Π°Π»ΠΈΠ°ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ @Component. Π‘Π°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ΄ΡΠ° Spring Framework ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊ ΠΆΠ΅.
ΠΡΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π°Π·ΡΠ²Π°ΡΡ Β«Stereotype annotationsΒ». ΠΡ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ β ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°, Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΎΠ»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²:
β’ @β Service β ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ;
β’ @β Repository β Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ : Β«ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉΒ» ΠΈΠ· Domain-Driven Design ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ DAO;
β’ @β Controller β ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π΅Π±-Π·Π°ΠΏΡΠΎΡΠΎΠ² (ΠΌΠ΅ΡΠΎΠ΄Ρ @RequestMapping)
Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΎΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Persistence API ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ ΡΡΠ΅ΡΠ΅ΠΎΡΠΈΠΏΠ° @Repository. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΊΡΠΎΠΌΠ΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
Java Guruπ€ #java
@Component β ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Spring-Π±ΠΈΠ½Π°. ΠΠ· Π²ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΏΠ°Π»ΠΈ Π² ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π·Π½Π°Π΅Ρ @ComponentScan), Π±ΡΠ΄ΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ Π±ΠΈΠ½-Π΄Π΅ΡΠΈΠ½ΠΈΡΠ½Ρ.
ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ β ΡΡΠΎ Π°Π»ΠΈΠ°ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ @Component. Π‘Π°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ΄ΡΠ° Spring Framework ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊ ΠΆΠ΅.
ΠΡΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π°Π·ΡΠ²Π°ΡΡ Β«Stereotype annotationsΒ». ΠΡ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ β ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°, Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΎΠ»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²:
β’ @β Service β ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ;
β’ @β Repository β Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ : Β«ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉΒ» ΠΈΠ· Domain-Driven Design ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ DAO;
β’ @β Controller β ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π΅Π±-Π·Π°ΠΏΡΠΎΡΠΎΠ² (ΠΌΠ΅ΡΠΎΠ΄Ρ @RequestMapping)
Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΎΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Persistence API ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ ΡΡΠ΅ΡΠ΅ΠΎΡΠΈΠΏΠ° @Repository. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΊΡΠΎΠΌΠ΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
Java Guruπ€ #java
π9π₯6β€3