рд╢реБрдн рджрд┐рди, рд╣реЗрдмреНрд░ред
рдЖрдЬ рдореИрдВрдиреЗ рдЖрдкрдХреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдкреНрд░реЛрдлреЗрд╢рдирд▓ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреА рддреИрдпрд╛рд░реА рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
рдпрд╣ рдЕрдиреБрд╡рд╛рдж рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЕрдиреБрд╡рд╛рдж рдЬрд╛рд░реА рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред
рдореИрдВ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рд╢реЗрд╖ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ?- рдЕрдХреНрд╕рд░ рдЙрдирдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрд░рдЪрд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдПрдХрддреНрд░ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ
- рдпреБрд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдВрдЧреНрд░реЗрдЬреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗред рдЗрд╕ рдЪрдХреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реНрд╡-рдкреНрд░рд╢рд┐рдХреНрд╖рдг / рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдЗрди рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреА рддреИрдпрд╛рд░реА рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпреВрдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд┐рд╡рдЯрд▓ рд╕реНрдЯрдбреА рдЧрд╛рдЗрдб рдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рд╕реЗ рдмрдирд╛ рд╣реИред
- рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХреБрдЫ рд╕рд╡рд╛рд▓ рдпрд╛рдж рдХрд┐рдП рдЬреЛ рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд▓рдЧреЗ рдпрд╛ рдЬреЛ рдЧрд╛рдЗрдб рдореЗрдВ рдирд╣реАрдВ рдереЗред

рдореИрдВ рдЙрди рд╕реНрд░реЛрддреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд▓рд┐рдЦреВрдВрдЧрд╛ рдЬрд┐рдирд╕реЗ рд▓реЗрдЦрдХ рдиреЗ рд╕рд╛рдордЧреНрд░реА рд▓реА рдереА- рд╕реНрдкреНрд░рд┐рдВрдЧ 5 рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди
- рд╕реНрдкреНрд░рд┐рдВрдЧ рдЗрди рдПрдХреНрд╢рди 4 рд╕рдВрд╕реНрдХрд░рдг
- рд╡рд╕рдВрдд рд╕реБрд░рдХреНрд╖рд╛ - рддреАрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг
- рдЗрд╡рд╛рди рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХреЛрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ 5 рдкреНрд░рдорд╛рдгрди
- рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдкреАрдЖрдИ рдЬреЗрд╡рд╛рдбреЛрдХ
рддреЛ, рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди (DI) рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдХреНрдпрд╛ рд▓рд╛рдн рд╣реИрдВ?рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреИрдЯрд░реНрди рд╣реИ рдЬреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, DI рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХрд╛ рдХреЛрдб рдХреНрд▓реАрдирд░, рд╕рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕рдордЭрдирд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдбреАрдЖрдИ рдкреИрдЯрд░реНрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдХрд╛рд░рдЦрд╛рдиреЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
DI рд▓рд╛рдн- рдЖрд╡реЗрджрди рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдореЗрдВ рдХрдореА
- рдмреЗрд╣рддрд░ рдкрд░реАрдХреНрд╖рдг
- рд╕рдВрд╡рд░реНрдзрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛
- рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ
- рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ
рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреАрдиреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреНрдпреЛрдВ рдХреА рдЬрд╛рддреА рд╣реИ?- рдмреЗрд╣рддрд░ рдкрд░реАрдХреНрд╖рдгред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдмреАрди рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдСрдмреНрдЬреЗрдХреНрдЯ (рдореЙрдХ рдпрд╛ рд╕реНрдЯрдм) рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдмреАрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
- рдЖрдкрдХреЛ JDK рд╕реЗ рдбрд╛рдпрдиреЗрдорд┐рдХ рдкреНрд░реЙрдХреНрд╕реА рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рддреЗ рд╕рдордп)
- рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрджрд░реНрдн рдХреНрдпрд╛ рд╣реИ?рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ, org.springframework.factory.BeanFactory
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ org.springframework.factory.BeanFactory
рдлреИрдХреНрдЯреНрд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ IoC рдПрдкреНрд▓реАрдХреЗрд╢рди рдХрдВрдЯреЗрдирд░ рд╣реИред рдмреАрди рдкреНрд░рдмрдВрдзрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрдзрд╛рд░рд┐рдд (рдЬрд╛рд╡рд╛ рдпрд╛ xml) рд╣реИред
org.springframework.context.ApplicationContext
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмреАрди рдлреИрдХреНрдЯреНрд░реА рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИ рдЬреЛ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ AOP, рд▓реЗрдирджреЗрди, рд╕реБрд░рдХреНрд╖рд╛, i18n, рдЖрджрд┐ред
рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреНрдпрд╛ рд╣реИ?рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЖрдзрд╛рд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИ, рдФрд░ рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╣рдорд╛рд░реА рд╡рд╕реНрддреБрдПрдВ "рд▓рд╛рдЗрд╡" рд╣реИрдВред
рдПрдХ рдХрдВрдЯреЗрдирд░ рдЖрдорддреМрд░ рдкрд░ рдЙрдирдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдирд╛рд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рд╕реЗ рдЙрдирдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред
рдХрдВрдЯреЗрдирд░ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ ApplicationContext рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
рдХрдВрдЯреЗрдирд░ рдЬреАрд╡рди рдЪрдХреНрд░- рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдХрдВрдЯреЗрдирд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ
- рдбрд┐рдмреНрдмреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбреЗрдЯрд╛ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ
- рдмреАрдирдлреИрдХреНрдЯрд░реАрдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рдмреАрди рд╡рд┐рд╡рд░рдг рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ
- рдХрдВрдЯреЗрдирд░ рдЙрдирдХреЗ рд╡рд┐рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдо рдмрдирд╛рддрд╛ рд╣реИ
- рдмреАрдиреНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдФрд░ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдмреАрди рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реЛрддреА рд╣реИрдВ
- рдмреАрдирдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЙрд▓рдмреИрдХ рдореЗрдердб рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
- рдЖрд╡реЗрджрди рдКрдкрд░ рдФрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
- рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрд╡реЗрджрди рдмрдВрдж
- рдХрдВрдЯреЗрдирд░ рдмрдВрдж рд╣реЛ рдЧрдпрд╛
- рдХреЙрд▓рдмреИрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
ApplicationContext рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХреИрд╕реЗ рдмрдирд╛рдПрдВ?рд╡рд╕рдВрдд рд╕рдВрджрд░реНрдн рдХреЗ рдХрдИ рд░реВрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
ApplicationContext рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрдИ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ:
- FileSystemXmlApplicationContext
- ClassPathXmlApplicationContext
- AnnotationConfigApplicationContext
- XmlWebApplicationContext
- AnnotationConfigWebApplicationContext
рдПрдХ рд╕рдВрджрд░реНрдн рдмрдирд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг:
ApplicationContext ctx = new FileSystemXmlApplicationContext( "c:/bean_properties.xml"); ApplicationContext ctx = new AnnotationConfigApplicationContext( "com.springdemoapp.JavaConfig.class");
рдХреНрдпрд╛ рдЖрдк рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдмреАрди рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?- рдмрд┐рди рд╡рд┐рд╡рд░рдг рд▓реЛрдб рдХрд░рдирд╛, рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдмрдирд╛рдирд╛ (рд╕реЗрдо рдХреЗ рдмреАрдЪ)
BeanFactoryPostProcessors
рдмрдирд╛рдирд╛ рдФрд░ BeanFactoryPostProcessors
- рдмреАрдиреНрд╕ рдмрдирд╛рдПрдВ
- рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реЗрдо рдЧреБрдгреЛрдВ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ
- рдпрджрд┐ рд╕реЗрдо рдиреЗ NameBeanAware рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ
setBeanName()
рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХреА рд╣реИ, рддреЛ рд╕реЗрдо рдЖрдИрдбреА рд╡рд┐рдзрд┐ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрджрд┐ рдмреАрди рдмреАрдирдлреИрдХреНрдЯрд┐рд╡рд╡реЗрдпрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЗрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ
setBeanFactory()
рдорд╛рдзреНрдпрдо рд╕реЗ рдмреАрди рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред - рдпрджрд┐ рд╕реЗрдо ApplicationContextAware рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ
setApplicationContext()
рдорд╛рдзреНрдпрдо рд╕реЗ setApplicationContext()
рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред BeanPostProcessor
рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ (рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ), рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЗрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред postProcessBeforeInitialization()
рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ, рдЖрдк рдЗрд╕реЗ (рдмреАрди) рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗрдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ (рдЧреБрдг, рдЖрджрд┐ рдХреА рд╕реНрдерд╛рдкрдирд╛)- рдпрджрд┐ рдХреЙрд▓рдмреИрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЙрдиреНрд╣реЗрдВ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣
@Bean
рдПрдиреЛрдЯреЗрд╢рди рд╕реЗ @PostConstruct
рдпрд╛ initMethod
рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдПрдиреЛрдЯреЗрдЯ рдХреА рдЧрдИ рд╡рд┐рдзрд┐ рд╣реИред - рдмреАрди рдЕрдм рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдпрд╣
ApplicationContext#getBean()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред - рд╕рдВрджрд░реНрдн рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж
close()
ApplicationContext рд╕реЗ рд╡рд┐рдзрд┐ close()
рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдмреАрди рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред - рдпрджрд┐ рдмреАрди рдореЗрдВ
@PreDestroy
рджреНрд╡рд╛рд░рд╛ рдПрдиреЛрдЯреЗрдЯ рдХреА рдЧрдИ рд╡рд┐рдзрд┐ рд╣реИ, рддреЛ рд╡рд┐рдирд╛рд╢ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдмреАрди рдбрд┐рд╕реНрдкреЛрдЬрд╝реЗрдмрд▓ рдмреАрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЖрд╡реЗрджрди рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ destroy()
рдХрд░рдиреЗ рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ destroy()
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзреНрд╡рдВрд╕ destroy()
рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдПрдЧрд╛ред рдЕрдЧрд░ destroyMethod
рдореЗрдВ @Bean
рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рдЯреЗрд╕реНрдЯ рдореЗрдВ ApplicationContext рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?рдпрджрд┐ рдЖрдк JUnit 5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ 2 рдПрдиреЛрдЯреЗрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- @ExtendWith (TestClass.class) - рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- @ContextConfoguration (classes = JavaConfig.class) - рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╕рдВрджрд░реНрдн рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ / xml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ
рдЖрдк @SpringJUnitConfig
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЗрди рджреЛрдиреЛрдВ рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИред
рдЖрдк рд╡реЗрдм рд▓реЗрдпрд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @SpringJUnitWebConfig
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕рдВрджрд░реНрдн рдХреИрд╕реЗ рдмрдВрдж рдХрд░реЗрдВ?рдпрджрд┐ рдпрд╣ рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ 2 рддрд░реАрдХреЗ рд╣реИрдВ:
- RegisterShutdownHook
registerShutdownHook()
рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢рдЯрдбрд╛рдЙрди-рд╣реБрдХ рдХреЛ registerShutdownHook()
рдХрд░реЗрдВ, рдпрд╣ AbstractApplicationContext рд╡рд░реНрдЧ рдореЗрдВ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдкрд╕рдВрджреАрджрд╛ рддрд░реАрдХрд╛ рд╣реИред - рдЖрдк AbstractApplicationContext рд╡рд░реНрдЧ рд╕реЗ
close()
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ:
- рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдЕрдкрдиреЗ рд▓рд┐рдП рд╢рдЯрдбрд╛рдЙрди-рд╣реБрдХ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдЧрд╛ред
рдЬрд╛рд╡рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреНрдпрд╛ рд╣реИ? рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
@Configuration
ред
рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдлрд▓рд┐рдпрд╛рдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реЛрдВрдЧреЗред
рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ @Bean
рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
@Configuration public class DSConfig { @Bean public DataSource dataSource() { return DataSourceBuilder .create() .username("") .password("") .url("") .driverClassName("") .build(); } }
рдпрд╣ рд╡рд░реНрдЧ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЧрд╛ред рдмрд╛рдж рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдбрд┐ рдПрдиреЛрдЯреЗрд╢рди, рдХреНрд▓рд╛рд╕ рд╕реНрдХреИрдирд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПрдШрдЯрдХ рд╕реНрдХреИрдирд┐рдВрдЧ - рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрди рдмреАрдиреНрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╣реЛрдВрдЧреЗред рдпреЗ рдПрдиреЛрдЯреЗрд╢рди-рд╕реНрдЯреАрд░рд┐рдпреЛрдЯрд╛рдЗрдк рд╡рд╛рд▓реЗ рдбрд┐рдмреНрдмреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдШрдЯрдХ рд╕реНрдХреИрдирд┐рдВрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред
рд╕реНрдХреИрдирд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдиреЛрдЯреЗрд╢рди @ComponentScanning
рд╕рд╛рде @ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд░реНрдЧ рдХреЛ рдПрдиреЛрдЯреЗрдЯ рдХрд░реЗрдВред рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрд╕ рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдХреИрди рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╡рд░реНрдЧ рдФрд░ рдЗрд╕рдХреЗ рд╕рднреА рдЙрдк-рдкреИрдХреЗрдЬ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдЖрдк рд╕реНрдХреИрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдкреИрдХреЗрдЬ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдХреНрд╖рд╛рдПрдВ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдСрдЯреЛ-рдлрд╛рдпрд░рд┐рдВрдЧ - рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдмрд┐рди рдХреЛ рд╕реНрдХреИрди рдпрд╛ рд░рдЦрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдЧрд╛ред
рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди @Autowire
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рд╕реНрдЯреАрд░рд┐рдпреЛрдЯрд╛рдЗрдк (рдПрдиреЛрдЯреЗрд╢рди-рд╕реНрдЯреАрд░рд┐рдпреЛрдЯрд╛рдЗрдк) рдХреНрдпрд╛ рд╣реИрдВ?рд╕реНрдЯреАрд░рд┐рдпреЛрдЯрд╛рдЗрдк рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реБрдП рдПрдиреЛрдЯреЗрд╢рди рд╣реИрдВред
рд╕рднреА рд╕реНрдЯреАрд░рд┐рдпреЛрдЯрд╛рдЗрдкреНрд╕ рдореЗрдВ @Component
рдПрдиреЛрдЯреЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИред
рдмрд┐рди рд╕реНрдХреЛрдк рдХреНрдпрд╛ рд╣реИрдВ? рдЙрдирдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рджреГрд╢реНрдпрддрд╛ рдХреНрдпрд╛ рд╣реИ?рд╕реНрдХреЛрдк - рдЧреБрдВрдЬрд╛рдЗрд╢ред 2 рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдХреЛрдк рд╣реИрдВред
рдФрд░ рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ 4 рд╕реНрдХреЛрдкред
рд╕реНрдХреЛрдк рдХреЛ @Scope
@Bean
рддрд░реАрдХреЛрдВ рдкрд░ @Bean
@Scope
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╡рд┐рднрд┐рдиреНрди рд╕реНрдХреЛрдк рдФрд░ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ?рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реНрдХреЛрдк рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдХреЗрд╡рд▓ 1 рдереНрд░реЗрдб рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рджреВрд╕рд░реА рдУрд░, рд╕рд┐рдВрдЧрд▓рдЯрди рд╕реНрдХреЛрдк, рдзрд╛рдЧрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред
рд╕реЗрдо рдХреИрд╕реЗ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ: рддреБрд░рдиреНрдд рдпрд╛ рдЖрд▓рд╕реА? рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХреИрд╕реЗ рдмрджрд▓реЗрдВ?рд╕рд┐рдВрдЧрд▓рдЯрди рдмреАрдиреНрд╕ рдХреЛ рд╕реНрдХреИрди рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмреАрдиреНрд╕ рдЖрдорддреМрд░ рдкрд░ рдХреЗрд╡рд▓ рдЕрдиреБрд░реЛрдз рдкрд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЖрдк рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @Lazy
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕реЗ @ рдмреАрди рд╡рд┐рдзрд┐рдпреЛрдВ, @ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрдХреНрд╖рд╛рдУрдВ, рдпрд╛ @ рдШрдЯрдХ рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдПрдиреЛрдЯреЗрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ (рд╕рдЪреНрдЪрд╛ рдпрд╛ рдЧрд▓рдд) рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрд░рдВрднреАрдХрд░рдг рдпрд╛ рддреЛ рдЖрд▓рд╕реА рд╣реЛрдЧрд╛ рдпрд╛ рддреБрд░рдВрдд рд╣реЛрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ (рдпрд╛рдиреА, рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛), рд╕рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рдПрдХ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд┐рди рджреВрд╕рд░реЗ рджрд╛рдпрд░реЗ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд┐рди рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?рд╕рд┐рдВрдЧрд▓рдЯрди рдмреАрди рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдмреАрди рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреЗрд╡рд▓ prototype
рдпрд╛ singleton
рдХреЛ singleton
рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ singleton
ред
рдпрджрд┐ рдЖрдк рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд┐рд╕реА рднреА рд╕реЗрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдк рдХреЗрд╡рд▓ рд╕рд┐рдВрдЧрд▓рдЯрди рдпрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ BeanFactoryPostProcessor рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?BeanFactoryPostProcessor
рдмрд┐рди рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд┐рди рд╡рд┐рд╡рд░рдг рдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред- рд╕реНрдкреНрд░рд┐рдВрдЧ рдХрдИ рдЙрдкрдпреЛрдЧреА
BeanFactoryPostProcessor
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдкрддреНрддрд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рдЙрдирд╕реЗ BeanFactoryPostProcessor
рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред - рдЖрдк BFPP рдХрд╛ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдкрдХреЛ рд╕реНрдереИрддрд┐рдХ @ рдмреАрди рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?рдХрд╕реНрдЯрдо BFPP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЖрдк рдореЗрдЯрд╛рдлрд╝рд╛рдЗрд▓реНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@Bean public static PropertySourcesPlaceholderConfigurer pspc() {
@ рдмреАрди рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВdestroyMethod
- рдПрдХ рдХреЙрд▓рдмреИрдХ рд╡рд┐рдзрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдзрд┐ рдмрд┐рди рдореЗрдВ рд╣реИредinitMethod
- рдПрдХ рдХреЙрд▓рдмреИрдХ рд╡рд┐рдзрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдзрд┐ рдмрд┐рди рдореЗрдВ рд╣реИредname
- рдмреАрди рдХрд╛ рдирд╛рдоред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдмреАрди рдирд╛рдо рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рд╣реИредvalue
- рдирд╛рдо рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо ()
рдмреАрдирдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдмреАрдирдлреИрдХреНрдЯрд░реАрдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗ рдХреИрд╕реЗ рдЕрд▓рдЧ рд╣реИ?рд╕реНрдкреНрд░рд┐рдВрдЧ рдХрдИ рдмреАрдирдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, CommonAnnotationPostProcessor
рдпрд╛ CommonAnnotationPostProcessor
ред
BPP рд╕реЗрдо рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдХрдВрдЯреЗрдирд░ рдмрд┐рди рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ BPP рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рдХреЙрд▓рдмреИрдХ рд╡рд┐рдзрд┐рдпрд╛рдБ рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП?рдРрд╕реЗ рддрд░реАрдХреЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП 3 рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
@PreDestroy
рдФрд░ @PostConstruct
рдПрдиреЛрдЯреЗрд╢рдиinitMethod
рдФрд░ destroyMethod
рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ destroyMethod
рдЬреЛ рдмреАрди рдХреНрд▓рд╛рд╕ рдореЗрдВ рддрд░реАрдХреЛрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВInitializingBean#afterPropertiesSet()
рдФрд░ DisposableBean#destroy()
InitializingBean#afterPropertiesSet()
DisposableBean#destroy()
ред рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдореИрдВ @Autowire рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЗрди рддрд░реАрдХреЛрдВ рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ DI рдХреЗ рдкреНрд░рдХрд╛рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВ:
- рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдбрд┐
- рд╕реЗрдЯрд░ рдбрд┐
- рдлреАрд▓реНрдб рдбрд┐
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ DI рдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рднреА рдХрд┐ рдЙрд╕реЗ рд╕реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреАрдЖрдИ рдХреЗ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реИрдВред
рдХреНрд╖реЗрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ DI рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ DI рдкрд░рд┐рдкрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреАрдиреНрд╕ рдпрд╛ рдбреАрдЖрдИ рдХреЗ рдЖрд▓рд╕реА рдЖрд░рдВрднреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@Autowired рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ- рдХрдВрдЯреЗрдирд░ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
- рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реЗрдо рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ (рдЙрд░реНрдл рдПрдХ рдХрдВрдЯреЗрдирд░) рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ
- рдпрджрд┐ рдХрдИ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ
@Primary
рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ @Primary
, рддреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЕрдЧрд░
@Autowire
+ Qualifier
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрдВрдЯреЗрдирд░ @Qualifier
рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред - рдЕрдиреНрдпрдерд╛, рдХрдВрдЯреЗрдирд░ рдЕрдкрдиреЗ рдирд╛рдо рдпрд╛ рдЖрдИрдбреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдШрдЯрдХ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред
- рдпрджрд┐ рдХрд┐рд╕реА рднреА рддрд░реАрдХреЗ рдиреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рдХрдВрдЯреЗрдирд░ рдПрдХ AutowiredAnnotationBeanPostProcessor рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ DI рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдмреАрдирдлреИрдХреНрдЯреНрд░реАрдкреАрдкреА рдпрд╛ рдмреАрдПрдирдкреАрдкреА рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЗрдВрдЬреЗрдХреНрдЯ рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдПрдХ рдЬреЗрдиреЗрд░рд┐рдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА, рд╕рдВрдЧреНрд░рд╣ рдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рд╣реИ, рддреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЙрди рд╕рднреА рдмреАрдиреНрд╕ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░реЗрдЧрд╛ рдЬреЛ рдЗрд╕ рд╕рд░рдгреА (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛) рдореЗрдВ рдЯрд╛рдЗрдк рдХреЗ рд╣реИрдВред рдирдХреНрд╢реЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреБрдВрдЬреА рдмреАрди рдирд╛рдо рд╣реЛрдЧреАред
рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ DI рдХреИрд╕реЗ рдмрдирд╛рдПрдВ?рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдбрд┐рдЬрд╛рдЗрдирд░
- рдмреИрдард╛рдиреЗрд╡рд╛рд▓рд╛
- рдлреАрд▓реНрдб рдЗрдВрдЬреЗрдХреНрд╢рди
- рдореВрд▓реНрдп
@ рдХреНрд╡реЙрд▓рд┐рдлрд╛рдпрд░ рд╕рдкреНрд▓реАрдореЗрдВрдЯ @Autowired рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ?рдбреАрдЖрдИ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд╡рд╛рд▓рд┐рдлрд╛рдпрд░ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
@Bean @Qualifier("SomeClass1") public SomeClass getField() {...}
рдпрджрд┐ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ (SomeClass) рдХреЗ рдХрдИ рдбрд┐рдмреНрдмреЗ рд╣реИрдВ, рддреЛ рдХрдВрдЯреЗрдирд░ @ рдмреАрди рд╡рд┐рдзрд┐ рдХреЗ рдареАрдХ рдКрдкрд░ рдЙрд╕ рдмрд┐рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдХреНрд╡рд╛рд▓реАрдлрд╛рдпрд░ рд╣реИред рдЖрдк рдПрдХ рд╡рд┐рдзрд┐ рдкрд░ рдПрдХ рдХреНрд╡рд╛рд▓реАрдлрд╛рдпрд░ рднреА рдирд╣реАрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрд╡рд╛рд▓реАрдлрд╛рдпрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдо рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдмреАрди рдХрд╛ рдирд╛рдо рдмреАрди рдПрдиреЛрдЯреЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдлрд╝реИрдХреНрдЯрд░реА рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рд╣реИред
рдкреНрд░реЙрдХреНрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░реЙрдХреНрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ?рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмреАрди рдХреЗ рд╕рдорд╛рди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИред
рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ:
- JDK- рдкреНрд░реЙрдХреНрд╕реА - рдбрд╛рдпрдиреЗрдорд┐рдХ рдкреНрд░реЙрдХреНрд╕реАред рдПрдкреАрдЖрдИ рдХреЛ рдЬреЗрдбреАрдХреЗ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИ
- CGLib рдкреНрд░реЙрдХреНрд╕реА - JDK рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдирд╣реАрдВ рд╣реИред рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░реЙрдХреНрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рдЕрддрд┐рд░рд┐рдХреНрдд рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред рддрд░реНрдХ - рд▓реЗрди-рджреЗрди рдкреНрд░рдмрдВрдзрди, рд╕реБрд░рдХреНрд╖рд╛, рд▓реЙрдЧрд┐рдВрдЧ
- рдХреБрдЫ рдХреЛрдб (рд▓реЙрдЧрд┐рдВрдЧ, рдЖрджрд┐) рдХреЛ рдореБрдЦреНрдп рддрд░реНрдХ рд╕реЗ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ
рд╕рд┐рдВрдЧрдирд▓ рдмреАрди рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?рдпрджрд┐ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреЛрдИ рд╕реЗрдо рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИ, рддреЛ @ рдмреАрди рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдмреАрди рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд░реНрдорд┐рдд рдмреАрди рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреНрдпрд╛ рд╣реИрдВ? рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрдирдХреЗ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИрдВ?рдЬрд╛рд╡рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдк @Profile
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдЖрдкрдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЗрд╕реЗ @Configuration рдФрд░ Component classes рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдмреАрди рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Profile("!test")
@Bean("dataSource") @Profile("production") public DataSource jndiDataSource() {...} @Bean("dataSource") @Profile("development") public DataSource standaloneDataSource() {...}
рд╡рд╕рдВрдд рдореЗрдВ рдЧреБрдгреЛрдВ рдореЗрдВ рд╕рд░рд▓ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдПрдореНрдмреЗрдб рдХрд░реЗрдВ?рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдк @Value
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдореВрд▓реНрдп рд╕рдВрдкрддреНрддрд┐ рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ, рдбрд┐рдмреНрдмреЗ рдЖрджрд┐ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
@Value("$some.key") public String stringWithDefaultValue;
рдЗрд╕ рдЪрд░ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рдпрд╛ рджреГрд╢реНрдп рд╕реЗред
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдкреАрдПрдо рдореЗрдВ рдкрд╛рдП рдЧрдП рд╕реБрдзрд╛рд░ рдпрд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рднреЗрдЬреЗрдВред