Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ applicationcontext ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΊΡΡ Spring ClassPathXmlApplicationContext
ΠΡΠ°ΡΠΊΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Ρ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π² ClassPathXmlApplicationContext, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ API, ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ» ΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ.
1. ΠΠ±Π·ΠΎΡ
Π―Π΄ΡΠΎ Spring Framework-ΡΡΠΎ, ΠΏΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ IoC, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±ΠΎΠ±Π°ΠΌΠΈ.
Π Spring Π΅ΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΈΠΏΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² β ΡΠ°Π±ΡΠΈΠΊΠ° Π±ΠΎΠ±ΠΎΠ² ΠΈ ΠΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΡΠ²ΡΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π·Π΄Π΅ΡΡ ; ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ.
2. ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
2.1. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΎΠ±Π°ΠΌΠΈ
ClassPathXmlApplicationContext ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ XML ΠΈΠ· ΠΏΡΡΠΈ ΠΊ ΠΊΠ»Π°ΡΡΡ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π΅Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ:
Π£ Π½Π°Ρ Π΅ΡΡΡ Π‘ΡΡΠ΄Π΅Π½Ρ ΠΊΠ»Π°ΡΡ:
ΠΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Π‘ΡΡΠ΄Π΅Π½Ρ Π±ΡΠ» Π² classpathxmlapplicationcontext-example.xml ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Π³ΠΎ Π² ΠΏΡΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ:
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ClassPathXmlApplicationContext Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ XML ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Student :
2.2. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ XML
ΠΠ½ΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ XML Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Spring. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ApplicationContext :
3. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ
3.1. ΠΠ·ΡΡΠ½ΠΎ ΠΠ°ΠΊΡΠΎΠΉΡΠ΅ ΠΡΡΠΆΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΠΎΠ
ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Spring IoC Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π²Π΅Π±-ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Spring ApplicationContext Π±ΡΠ΄ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² Π½Π΅ Π²Π΅Π±-ΡΡΠ΅Π΄Π΅, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΠ΅ Π½Π°ΡΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΡΡΠΊ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π² JVM, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Spring IoC ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ destroy Π΄Π»Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ².
ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ destroy() Π² ΠΊΠ»Π°ΡΡ Student :
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ student bean:
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌ ΠΊΡΡΠΊ Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ:
3.2. ΠΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π‘ ΠΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² Ρ ΠΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ :
ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ MessageSource bean Π² classpathxmlapplicationcontext-internationalization.xml :
ΠΠ°ΡΠ΅ΠΌ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΠ΅ ΡΠ»ΠΎΠ²Π° ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ MessageSource :
4. Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΡΠ΅ΠΊΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π£ Π½Π°Ρ Π΅ΡΡΡ ΠΡΡΡ ΠΊΠ»Π°ΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ:
Π£ Π½Π°Ρ Π΅ΡΡΡ Π£ΡΠΈΡΠ΅Π»Ρ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΡΠ²ΠΎΠΈ ΠΊΡΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ°ΡΠΎΠ»ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°:
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΠΌ ΠΊΡΡΡ Π±ΠΎΠ± ΠΈ ΡΡΠΈΡΠ΅Π»Ρ Π±ΡΠ» Π² classpathxmlapplicationcontext-example.xml :
ΠΠ°ΡΠ΅ΠΌ β ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅ ΠΈΠ½ΡΠ΅ΠΊΡΠΈΡ ΠΊΡΡΡΠΎΠ² ΡΠ²ΠΎΠΉΡΡΠ²Π°:
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΊΠ»Π°ΡΡ Π£ΡΠΈΡΠ΅Π»Ρ Π½Π° ΡΡΠΎΡ:
ΠΠ°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΡΠΎΡ ΡΠ΅ΡΡ, ΠΈ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΎΡ ΠΆΠ΅.
5. ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ BeanFactory ΠΈ ApplicationContext
Π£Π·Π½Π°ΠΉΡΠ΅ ΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ApplicationContext Spring ΠΈ BeanFactory Π½Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
1. ΠΠ±Π·ΠΎΡ
Π ΡΡΠΎΠΌ ΠΊΡΠ°ΡΠΊΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΌΡ ΠΏΠΎΠΉΠΌΠ΅ΠΌ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ Π΄Π²ΡΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ IOC Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ.
2. ΠΠ΅Π½ΠΈΠ²Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΎΡΠΈΠ² ΠΠ΅ΡΠ΅ΡΠΏΠ΅Π»ΠΈΠ²Π°Ρ ΠΠ°Π³ΡΡΠ·ΠΊΠ°
2.1. ΠΠ΅Π½ΠΈΠ²Π°Ρ ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π‘ BeanFactory
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΉ Π±ΠΎΠ± ΠΊΠ»Π°ΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Student Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ:
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ Student bean, Π³Π΄Π΅ ΠΌΡ Π²ΡΡΡΠ½ΡΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ getBean() :
ΠΠ΄Π΅ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Student ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, BeanFactory Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π±ΠΎΠ± ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
2.2. ΠΠ΅ΡΠ΅ΡΠΏΠ΅Π»ΠΈΠ²Π°Ρ ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π‘ ΠΠΎΠΌΠΎΡΡΡ ApplicationContext
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ApplicationContext Π²ΠΌΠ΅ΡΡΠΎ BeanFactory.
ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ ApplicationContext, ΠΈ ΠΎΠ½ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡ Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π½Π΅ΡΠ΅ΡΠΏΠ΅Π»ΠΈΠ²ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ:
ΠΠ΄Π΅ΡΡ, Π² Π‘ΡΡΠ΄Π΅Π½Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π»ΠΈ getBean() ΠΌΠ΅ΡΠΎΠ΄.
3. Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ApplicationContext ΡΠ°ΡΡΠΈΡΡΠ΅Ρ BeanFactory Π² Π±ΠΎΠ»Π΅Π΅ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π½Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΡΡΠΈΠ»Π΅ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ Π΄Π»Ρ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
4. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ BeanFactoryPostProcessor ΠΈ BeanPostProcessor
ApplicationContext Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ BeanFactoryPostProcessor ΠΈ BeanPostProcessor ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, BeanFactory Π½Π΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ ΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
4.1. Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π² BeanFactory
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ°.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΡ Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ ΠΎΠ±Π° ΠΊΠ»Π°ΡΡΠ° Π² Π½Π°ΡΠ΅ΠΌ ioc-container-difference-example.xml ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡΡΡ Π»ΠΈ ΡΡΠΈ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°:
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΡΠ½ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΈΡ Π² ΠΠΎΠ±ΠΎΠ²ΡΠΉ Π·Π°Π²ΠΎΠ΄ :
4.2. Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π² ApplicationContext
ΠΠ°ΠΊ ΠΌΡ ΡΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΈ ΡΠ°Π½Π΅Π΅, ApplicationContext ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ ΠΎΠ±Π° ΠΊΠ»Π°ΡΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π±Π΅Π· Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠΌ ΡΠ΅ΡΡΠ΅:
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ½ΡΠΉ BeanFactory, ΡΠΎ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈ AOP, Π½Π΅ Π²ΡΡΡΠΏΡΡ Π² ΡΠΈΠ»Ρ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π±Π΅Π· Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°). ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΡΡΠ°Π½ΠΈΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
5. ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ApplicationContext ΠΈ BeanFactory Π½Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ .
Spring ApplicationContext
Π£Π·Π½Π°ΠΉΡΠ΅ ΠΎΠ± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ApplicationContext Π² Spring ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΡΠΈΠΏΠ°Ρ ApplicationContext.
1. ΠΠ±Π·ΠΎΡ
2. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ApplicationContext
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΏΡΡΠΆΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠΊΠ°ΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ IoC (ΠΠ½Π²Π΅ΡΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ). ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Spring IoC ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΠΊΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
3. Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΠ΅ΡΠ΅Π½Π½ΡΡ Π€Π°ΡΠΎΠ»Ρ?
ΠΡΠ°ΠΊ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π»ΠΈ ΠΌΡ Π½Π°ΡΡΡΠΎΠΈΡΡ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ Spring beans? ΠΡ, ΠΊΠ°ΠΊ Π»ΡΡΡΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΠΌΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΎΠ³ΠΎ Π΄Π΅Π»Π°ΡΡ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΌΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΌΠ΅Π»ΠΊΠΎΠ·Π΅ΡΠ½ΠΈΡΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΠΎΠΌΠ΅Π½Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅. ΠΠ±ΡΡΠ½ΠΎ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄ΠΎΠΌΠ΅Π½Π° Π»Π΅ΠΆΠΈΡ Π½Π° DAO ΠΈ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ΅.
ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΊΠ»Π°ΡΡ Java, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Spring Π² ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅:
4. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π±ΠΎΠ±ΠΎΠ² Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅
ΠΠ°ΠΊ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° ApplicationContext Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π±ΠΎΠ±Π°ΠΌΠΈ.
4.1. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Java
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΌΡ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Java, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΡΠ°ΠΌΡΠΉ Π½ΠΎΠ²ΡΠΉ ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΠ½ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Ρ Π²Π΅ΡΠ½Ρ 3.0 ΠΈ Π΄Π°Π»Π΅Π΅.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Java ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ @Bean -Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² ΠΊΠ»Π°ΡΡΠ΅ @Configuration . ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ @Bean Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΡΠΆΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ»Π°ΡΡ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Configuration ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Spring.
ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ»Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π°Ρ Account Service ΠΊΠ»Π°ΡΡ ΠΊΠ°ΠΊ Spring bean:
4.2. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ
Spring 2.5 ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ°Π³Π° Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² Java.
ΠΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Java. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Spring ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊ ΡΡΠΈΠΌ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π²ΡΠΏΡΡΠΊΠΎΠΌ.
ΠΡΠ°ΠΊ, ΡΠ΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ»Π°ΡΡ User Service ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Spring bean, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Component :
Π Π·Π°ΡΠ΅ΠΌ ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
4.3. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ XML
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ XML. ΠΡΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π±ΠΎΠ±ΠΎΠ² Π²Π΅ΡΠ½ΠΎΠΉ.
5. Π’ΠΈΠΏΡ ApplicationContext
5.1. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡconfigapplicationcontext
ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° AnnotationConfigApplicationContext Ρ Π½Π°ΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Java:
5.2. Π°Π½Π½ΠΎΡΠ°ΡΠΈΡconfigwebapplicationcontext
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΏΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΠ΅Π»Ρ Spring ContextLoaderListener servlet ΠΈΠ»ΠΈ Spring MVC DispatcherServlet Π² web.xml ΡΠ°ΠΉΠ».
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Spring 3.0 ΠΈ Π΄Π°Π»Π΅Π΅, ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ΅, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ WebApplicationInitializer :
5.3. XmlWebApplicationContext
5.4. Π€Π°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° xmlapplicationcontext
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Spring ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ XML:
5.5. ClassPathXmlApplicationContext
ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°:
6. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ApplicationContext
6.1. Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ StaticMessageSource Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² ΠΈΡΡΠΎΡΠ½ΠΈΠΊ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±Π°Π·ΠΎΠ²ΡΡ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ², ΡΠ΅ΠΌ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΡΡΠΎΡΠ½ΠΈΠΊ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΡΠ²ΠΎΠΉΡΡΠ².
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°ΠΉΠ» messages.properties Π² ΠΏΡΡΠΈ ΠΊ ΠΊΠ»Π°ΡΡΡ:
ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² Π½Π°Ρ ΠΊΠ»Π°ΡΡ Account Config :
Π-ΡΡΠ΅ΡΡΠΈΡ , ΠΌΡ Π²Π²Π΅Π΄Π΅ΠΌ MessageSource Π² ΡΠ»ΡΠΆΠ±Ρ ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ :
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ GetMessage Π² Π»ΡΠ±ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΠ»ΡΠΆΠ±Ρ Account Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ:
6.2. ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ
7. ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΡΠΊΠΈΠ΅ ΠΠ»ΠΎΠ³ΠΈ
ΠΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ BeanFactory ΠΈ ApplicationContext Π²ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅ Spring
Spring ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Bean ΠΈ Bean ΡΠ΅ΡΠ΅Π· ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Java Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Bean ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Beans. ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ IoC Sprig ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ, ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ΅ΡΡΡΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π·Π°Π΄Π°Ρ.
ΠΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (com.springframework.context.ApplicationContext) ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° BeanFactory ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ½ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΊΠ°ΡΠΊΠ°ΡΠ°, ΡΠΏΡΠΎΡΠ°Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
1 BeanFactory
1.1 ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΊΠ»Π°ΡΡΠΎΠ²
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ BeanFactory. Π Π²Π΅ΡΡΠΈΡΡ Π΄ΠΎ Spring 3.2 Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ XmlBeanFactory, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ XmlBeanDefinitionReader ΠΈ DefaultListableBeanFactory.
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ BeanFactory Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π°Π²Π΅ΡΡ Ρ Π΄Π΅ΡΠ΅Π²Π° ΡΡΡΡΠΊΡΡΡΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠ³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ getBean (String beanName), ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Bean Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. Π€ΡΠ½ΠΊΡΠΈΠΈ BeanFactory ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ°ΡΡΠΈΡΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΡΡΠ³ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ².
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
ListableBeanFactory | ΠΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΠΌΠΎΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΠ³ΠΎ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. |
HierarhicalBeanFactory | ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎ-Π΄ΠΎΡΠ΅ΡΠ½Π΅Π³ΠΎ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° IoC, Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. |
ConfigurableBeanFactory | ΠΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° IoC. ΠΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠ°ΠΊ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΡΠ²ΠΎΠΉΡΡΠ², ΠΏΠΎΡΡΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ Ρ. Π. |
AutowireCapableBeanFactory | ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΈΠΏΡ). |
SingletonBeanFactory | ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ½ΡΠ΅ bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. |
BeanDefinitionRegistry | ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ·Π»Π° Bean Π² ΡΠ°ΠΉΠ»Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Spring ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ BeanDefinition Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Spring, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Bean. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ BeanDefinitionResgistry ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΡΡΠ½ΠΎΠΉ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² BeanDefinition Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅. |
1.2 ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Bean People Π² ΡΠ°ΠΉΠ»Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Spring, Π·Π°ΡΠ΅ΠΌ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· BeanFactory ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ioc.
Π€Π°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Spring:
ΠΠ°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ DefaultListableBeanFactory ΠΈ XmlBeanDefinitionReader Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ioc:
XmlBeanDefinitionReader Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Spring ΡΠ΅ΡΠ΅Π· Resource ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ioc, Π° Π·Π°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Bean ΡΠ΅ΡΠ΅Π· BeanFactory # getBean (name). ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅. ΠΠ»Ρ ΠΎΠ΄Π½ΠΎΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ½ΡΡ bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² BeanFactory ΠΊΡΡΠΈΡΡΠ΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Bean, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° getBean () Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Bean ΠΈΠ· ΠΊΠ΅ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° IoC.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ BeanFactory Π΄Π»Ρ Π½Π΅Π³ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° ββΡΡΡΡΠΊΡΡΡΠ° ΠΆΡΡΠ½Π°Π»Π°.ΠΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Log4J, ΡΠΎ Π΅ΡΡΡ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Log4J ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΏΡΡΠΈ ΠΊ ΠΊΠ»Π°ΡΡΠ°ΠΌ, ΡΠ°ΠΊ ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Spring ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
2 ApplicationContext
ApplicationContext ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌ ΠΎΡ BeanFactory ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π BeanFactory ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ, Π° Π² ApplicationContext ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ.
2.1 ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΊΠ»Π°ΡΡΠ° ApplicationContext
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
ApplicationEventPublisher | ΠΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΎΠ±ΡΡΠΈΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ ΡΠΎΠ±ΡΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΡΠΎΠ±ΡΡΠΈΠΉ ApplicationListener, ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° ΡΠΎΠ±ΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. Π Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ AbstractApplicationContext ApplicationContext Π΅ΡΡΡ ApplicationEventMulticaster, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΎΠ±ΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°. |
MessageSource | ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ i18n Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. |
ResourcePatternResolver | ΠΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ApplicationContext ΠΈΠΌΠ΅ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ PathMatchingResourcePatternResolver, Π° ΡΠ°ΠΉΠ»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Spring ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠ² ΠΏΡΡΠΈ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ² Π² ΡΡΠΈΠ»Π΅ Ant. |
LifeCycle | ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π°, start () ΠΈ stop (), ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ. ΠΡΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ApplicationContext, ΡΠ°ΠΊ ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ Bean. ApplicationContext Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π·Π°ΠΏΡΡΠΊΠ΅ / ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π²ΡΠ΅ΠΌ bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ JMX ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π΄Π°Ρ. |
ConfigurableApplicationContext | ΠΠ½ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ ApplicationContext, Π΄Π°Π²Π°Ρ ApplicationContext Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ³Π΄Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π·Π°ΠΊΡΡΡ, Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ refresh (), ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ; Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΠΆΠ΅ Π·Π°ΠΏΡΡΠ΅Π½, Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ refresh (), ΡΡΠΎΠ±Ρ ΠΎΡΠΈΡΡΠΈΡΡ ΠΊΠ΅Ρ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ; Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ close (), ΡΡΠΎΠ±Ρ Π·Π°ΠΊΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. |
2.1.1 ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ XML
ΠΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ApplicationContext Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠ»Π°ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ApplicationContext Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΡΠ΅ΠΌ ΠΊ ΡΠ°ΠΉΠ»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°Π±ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΈ Spring Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ClassPathXmlApplicationContext ΠΈ FileSystemXmlApplicationContext ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΡΡΡ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ ΡΠΈΠΏΠ° ΡΠ΅ΡΡΡΡΠ°.
2.1.2 ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°
Spring ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΊΠ»Π°ΡΡΠΎΠ².ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡΠΎΠ΅ΠΊΡΠ° Spring ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ JavaConfig. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ JavaConfig ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ Π΄ΠΎ ΡΠ°ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Spring. POJO Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Configuration ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Bean, ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ Spring.
ΠΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ XML, ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΊΠ»Π°ΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ AnnotationConfigApplicationContext Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Spring:
2.1.3 ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Groovy DSL
Spring 4.x ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Groovy DSL Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠ»ΠΎΠΆΠ½Π°Ρ ΠΈ Π³ΠΈΠ±ΠΊΠ°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
Π‘Π½Π°ΡΠ°Π»Π° Π²Π²Π΅Π΄ΠΈΡΠ΅ Groovy Π² pom.xml:
ΠΠ°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ GenericGroovyApplicationContext Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°:
2.2 ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΊΠ»Π°ΡΡΠ° WebApplicationContext
WebApplicationContext ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈΠ· ΠΏΡΡΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Π±-ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π΄Π»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π‘ΡΡΠ»ΠΊΡ Π½Π° ServletContext ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ· WebApplicationContext. ΠΠ΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΡΠΈΠ±ΡΡΠ° Π² ServletContext, ΡΡΠΎΠ±Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ³Π»ΠΎ ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ Spring Spring ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ getWebApplicationContext (ServletContext src) Π΄Π»Ρ WebApplicationContextUtils Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° WebApplicationContext ΠΈΠ· ServletContext.
Π ΡΡΠ΅Π΄Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΎΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Bean ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π΅ ΠΎΠ±Π»Π°ΡΡΠΈ: ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΡ ΠΈ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ½ΡΡ. Π WebApplicationContext ΠΎΠ½ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊ ΠΠΈΠ½Ρ Π΅ΡΠ΅ ΡΡΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ: Π·Π°ΠΏΡΠΎΡ, ΡΠ΅Π°Π½Ρ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΡΠ΅Π°Π½Ρ.
WebApplicationContext ΡΠ°ΡΡΠΈΡΡΠ΅Ρ ApplicationContext. WebApplicationContext ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ROOT_WEB_APPLICATION_ CONTEXT_ATTRIBUTE. ΠΠΎΠ³Π΄Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ, ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ WebApplicationContext ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ° ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ServletContext. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ WebApplicationContext ΠΈΠ· Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°:
ConfigurableWebApplicationContext ΡΠ°ΡΡΠΈΡΡΠ΅Ρ WebApplicationContext, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ WebApplicationContext ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΄Π²Π° Π²Π°ΠΆΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°:
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
setServletContext(ServletContext servletContext) | ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Spring Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π΄Π²ΡΡ |
setConfigLocations(String[] configLocations) | ΠΠ°Π΄Π°ΠΉΡΠ΅ Π°Π΄ΡΠ΅Ρ ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Spring. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π°Π΄ΡΠ΅Ρ ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π°Π΄ΡΠ΅ΡΠ° ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Π±-ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ /WEB-INF/config.xml. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π΄ΡΠ΅ΡΠ° Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ ΡΠΈΠΏΠ° ΡΠ΅ΡΡΡΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ classpath: net / deniro / beans.xml. |
2.3 ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ WebApplicationContext
WebApplicationContext ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ServletContext, Ρ Π½Π΅Π³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΡΡΠΎΠ±Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ°ΠΌΠΎΠ·Π°ΠΏΡΡΠΊΠ°ΡΡΠΈΠΉΡΡ ΡΠ΅ΡΠ²Π»Π΅Ρ ΠΈΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΠ΅Π»Ρ Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (ServletContextListener) Π² web.xml. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΡΠΈΡ Π΄Π²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Spring.
Π½ΠΎΡΠ°: ΠΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°ΠΌΠΎΠ·Π°ΠΏΡΡΠΊΠ°ΡΡΠΈΠΉΡΡ ΡΠ΅ΡΠ²Π»Π΅Ρ, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Servlet 2.3 ΠΈ Π²ΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². ΠΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΡΠ²Π»ΡΡΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Weblogic 8.1, WebSphere 5.x, Oracle OC4J 9.0 ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
Spring ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠ²Π»Π΅ΡΠΎΠ² ΠΈ Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° WebApplicationContext:
* org.springframework.web.context.ContextLoaderServletγ
* org.springframework.web.context.ContextLoaderListenerγ
2.3.1 XML-ΠΌΠ΅ΡΠΎΠ΄
ΠΠ°Π²Π°ΠΉΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΠΌ WebApplicationContext Ρ ΠΏΠΎΠΌΠΎΡΡΡ ContextLoaderListener:
ContextLoaderListener ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Spring ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° contextConfigLocation. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΡΡΠ΅, ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΡ Π΄Π»Ρ ΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ. ΠΠ»Ρ ΠΏΡΡΠ΅ΠΉ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ Π±Π΅Π· ΠΏΡΠ΅ΡΠΈΠΊΡΠ° ΡΠΈΠΏΠ° ΡΠ΅ΡΡΡΡΠ° WebApplicationContext Π±ΡΠ΄Π΅Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΏΡΡΠΈ ΠΊΠ°ΠΊ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΏΡΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΡΡΠΈ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ ΡΠΈΠΏΠ° ΡΠ΅ΡΡΡΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π΄Π΅ΡΡ classpath*:spring-*.xml γ
ΠΡΠ»ΠΈ Π²Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π² Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Ρ Π½ΠΈΠ·ΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΠ΅Π»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ContextLoaderServlet Π΄Π»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ Π·Π°ΠΏΡΡΠΊΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Spring 4 Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ WebApplicationContext Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΆΡΡΠ½Π°Π», ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Log4J Π² ΠΏΡΡΡ ΠΊ ΠΊΠ»Π°ΡΡΠ°ΠΌ WEB-INF / classes, ΡΡΠΎΠ±Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Log4J ΠΌΠΎΠ³ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠ»Π°Π²Π½ΠΎ. ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Log4J Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Log4J Π² web.xml. Spring ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ Π·Π°ΠΏΡΡΠΊΡ WebApplicationContext Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Log4J: Log4jConfigServlet (Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π² Spring4) ΠΈ Log4jConfigListener. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Log4J ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π° Π΄ΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Spring.
Π½ΠΎΡΠ°: Log4jConfigListener Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΠΏΠ΅ΡΠ΅Π΄ ContextLoaderListener, ΡΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ, Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Log4J ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Log4J, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ.
2.3.2 ΠΠ΅ΡΠΎΠ΄ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Java-ΠΊΠ»Π°ΡΡ @Configuration Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
Π ΡΡΠΎ Π²ΡΠ΅ΠΌΡ, Π΅ΡΠ»ΠΈ ContextLoaderListener Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° contextClass, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ AnnotationConfigWebApplicationContext, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ, Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΠ»Π°ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ @Configuration, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ contextConfigLocation.
2.3.3 Groovy DSL ΡΠΏΠΎΡΠΎΠ±
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Groovy DSL, ΠΏΡΠΈΠ½ΡΠΈΠΏ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ.
2.4 ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎ-Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ
Π§Π΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ HierarchicalBeanFactory ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ IoC Spring ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Β«ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ-ΠΏΠΎΡΠΎΠΌΠΎΠΊΒ». ΠΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Bean Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅, Π½ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Bean Π΄ΠΎΡΠ΅ΡΠ½Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΠ½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ, Π½ΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ, ΡΡΠΎ ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΠ΅ΡΠ°ΡΡ ΠΈΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎ-Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Spring, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠ΅ΡΡΠΈ ΡΡΠΎΡΠΎΠ½Ρ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
Spring ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎ-Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Spring MVC ΠΠΈΠ½ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² Π΄ΠΎΡΠ΅ΡΠ½Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅, Π° ΠΠΈΠ½Ρ Π±ΠΈΠ·Π½Π΅Ρ-ΡΡΠΎΠ²Π½Ρ ΠΈ ΡΡΠΎΠ²Π½Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΠΎΡΡΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΠΈΠ½ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊ Π±ΠΈΠ·Π½Π΅Ρ-ΡΡΠΎΠ²Π½Ρ ΠΈ ΠΠΈΠ½Ρ ΡΡΠΎΠ²Π½Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΠΎΡΡΠΈ, Π½ΠΎ ΠΠΈΠ½ Π±ΠΈΠ·Π½Π΅Ρ-ΡΡΠΎΠ²Π½Ρ ΠΈ ΠΠΈΠ½ ΡΡΠΎΠ²Π½Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΠΎΡΡΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΈΠ΄Π΅ΡΡ ΠΠΈΠ½ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ.