рд╕реНрдкреНрд░рд┐рдВрдЧ рдкреНрд░реЛрдлреЗрд╢рдирд▓ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреА рддреИрдпрд╛рд░реАред рдХрдВрдЯреЗрдирд░, IoC, рдмреАрдиреНрд╕

рд╢реБрдн рджрд┐рди, рд╣реЗрдмреНрд░ред


рдЖрдЬ рдореИрдВрдиреЗ рдЖрдкрдХреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдкреНрд░реЛрдлреЗрд╢рдирд▓ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреА рддреИрдпрд╛рд░реА рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред


рдпрд╣ рдЕрдиреБрд╡рд╛рдж рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЕрдиреБрд╡рд╛рдж рдЬрд╛рд░реА рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред


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

  • рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХреБрдЫ рд╕рд╡рд╛рд▓ рдпрд╛рдж рдХрд┐рдП рдЬреЛ рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд▓рдЧреЗ рдпрд╛ рдЬреЛ рдЧрд╛рдЗрдб рдореЗрдВ рдирд╣реАрдВ рдереЗред

рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛
  1. рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди, рдХрдВрдЯреЗрдирд░, IoC, рд╕реЗрдо
  2. рдПрдУрдкреА (рдкрд╣рд▓реВ-рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ)
  3. рдЬреЗрдбреАрдмреАрд╕реА, рд▓реЗрдирджреЗрди, рдЬреЗрдкреАрдП, рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛
  4. рд╡рд╕рдВрдд рдХрд╛ рдмреВрдЯ
  5. рд╕реНрдкреНрд░рд┐рдВрдЧ mvc
  6. рд╡рд╕рдВрдд рд╕реБрд░рдХреНрд╖рд╛
  7. рдмрд╛рдХреА
  8. рдкрд░реАрдХреНрд╖рдг


рдореИрдВ рдЙрди рд╕реНрд░реЛрддреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд▓рд┐рдЦреВрдВрдЧрд╛ рдЬрд┐рдирд╕реЗ рд▓реЗрдЦрдХ рдиреЗ рд╕рд╛рдордЧреНрд░реА рд▓реА рдереА
  • рд╕реНрдкреНрд░рд┐рдВрдЧ 5 рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди
  • рд╕реНрдкреНрд░рд┐рдВрдЧ рдЗрди рдПрдХреНрд╢рди 4 рд╕рдВрд╕реНрдХрд░рдг
  • рд╡рд╕рдВрдд рд╕реБрд░рдХреНрд╖рд╛ - рддреАрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг
  • рдЗрд╡рд╛рди рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХреЛрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ 5 рдкреНрд░рдорд╛рдгрди
  • рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдкреАрдЖрдИ рдЬреЗрд╡рд╛рдбреЛрдХ

рддреЛ, рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред


рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди (DI) рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдХреНрдпрд╛ рд▓рд╛рдн рд╣реИрдВ?

рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреИрдЯрд░реНрди рд╣реИ рдЬреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, DI рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХрд╛ рдХреЛрдб рдХреНрд▓реАрдирд░, рд╕рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕рдордЭрдирд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдбреАрдЖрдИ рдкреИрдЯрд░реНрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдХрд╛рд░рдЦрд╛рдиреЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


DI рд▓рд╛рдн
  • рдЖрд╡реЗрджрди рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдореЗрдВ рдХрдореА
  • рдмреЗрд╣рддрд░ рдкрд░реАрдХреНрд╖рдг
  • рд╕рдВрд╡рд░реНрдзрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛
  • рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ
  • рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреАрдиреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреНрдпреЛрдВ рдХреА рдЬрд╛рддреА рд╣реИ?
  • рдмреЗрд╣рддрд░ рдкрд░реАрдХреНрд╖рдгред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдмреАрди рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдСрдмреНрдЬреЗрдХреНрдЯ (рдореЙрдХ рдпрд╛ рд╕реНрдЯрдм) рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдмреАрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
  • рдЖрдкрдХреЛ JDK рд╕реЗ рдбрд╛рдпрдиреЗрдорд┐рдХ рдкреНрд░реЙрдХреНрд╕реА рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рддреЗ рд╕рдордп)
  • рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрджрд░реНрдн рдХреНрдпрд╛ рд╣реИ?

рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ, org.springframework.factory.BeanFactory рдЗрдВрдЯрд░рдлрд╝реЗрд╕ org.springframework.factory.BeanFactory рдлреИрдХреНрдЯреНрд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ IoC рдПрдкреНрд▓реАрдХреЗрд╢рди рдХрдВрдЯреЗрдирд░ рд╣реИред рдмреАрди рдкреНрд░рдмрдВрдзрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрдзрд╛рд░рд┐рдд (рдЬрд╛рд╡рд╛ рдпрд╛ xml) рд╣реИред


org.springframework.context.ApplicationContext рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмреАрди рдлреИрдХреНрдЯреНрд░реА рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИ рдЬреЛ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ AOP, рд▓реЗрдирджреЗрди, рд╕реБрд░рдХреНрд╖рд╛, i18n, рдЖрджрд┐ред


рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреНрдпрд╛ рд╣реИ?

рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЖрдзрд╛рд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИ, рдФрд░ рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╣рдорд╛рд░реА рд╡рд╕реНрддреБрдПрдВ "рд▓рд╛рдЗрд╡" рд╣реИрдВред
рдПрдХ рдХрдВрдЯреЗрдирд░ рдЖрдорддреМрд░ рдкрд░ рдЙрдирдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдирд╛рд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рд╕реЗ рдЙрдирдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред


рдХрдВрдЯреЗрдирд░ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ ApplicationContext рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред


рдХрдВрдЯреЗрдирд░ рдЬреАрд╡рди рдЪрдХреНрд░
  1. рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  2. рдХрдВрдЯреЗрдирд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ
  3. рдбрд┐рдмреНрдмреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбреЗрдЯрд╛ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ
  4. рдмреАрдирдлреИрдХреНрдЯрд░реАрдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рдмреАрди рд╡рд┐рд╡рд░рдг рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ
  5. рдХрдВрдЯреЗрдирд░ рдЙрдирдХреЗ рд╡рд┐рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдо рдмрдирд╛рддрд╛ рд╣реИ
  6. рдмреАрдиреНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдФрд░ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдмреАрди рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реЛрддреА рд╣реИрдВ
  7. рдмреАрдирдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЙрд▓рдмреИрдХ рдореЗрдердб рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
  8. рдЖрд╡реЗрджрди рдКрдкрд░ рдФрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
  9. рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрд╡реЗрджрди рдмрдВрдж
  10. рдХрдВрдЯреЗрдирд░ рдмрдВрдж рд╣реЛ рдЧрдпрд╛
  11. рдХреЙрд▓рдмреИрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ

ApplicationContext рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХреИрд╕реЗ рдмрдирд╛рдПрдВ?

рд╡рд╕рдВрдд рд╕рдВрджрд░реНрдн рдХреЗ рдХрдИ рд░реВрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред


ApplicationContext рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрдИ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ:


  • FileSystemXmlApplicationContext
  • ClassPathXmlApplicationContext
  • AnnotationConfigApplicationContext
  • XmlWebApplicationContext
  • AnnotationConfigWebApplicationContext

рдПрдХ рд╕рдВрджрд░реНрдн рдмрдирд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг:


 ApplicationContext ctx = new FileSystemXmlApplicationContext(                                     "c:/bean_properties.xml"); ApplicationContext ctx = new AnnotationConfigApplicationContext(                            "com.springdemoapp.JavaConfig.class"); 

рдХреНрдпрд╛ рдЖрдк рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдмреАрди рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
  1. рдмрд┐рди рд╡рд┐рд╡рд░рдг рд▓реЛрдб рдХрд░рдирд╛, рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдмрдирд╛рдирд╛ (рд╕реЗрдо рдХреЗ рдмреАрдЪ)
  2. BeanFactoryPostProcessors рдмрдирд╛рдирд╛ рдФрд░ BeanFactoryPostProcessors
  3. рдмреАрдиреНрд╕ рдмрдирд╛рдПрдВ
  4. рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реЗрдо рдЧреБрдгреЛрдВ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ
  5. рдпрджрд┐ рд╕реЗрдо рдиреЗ NameBeanAware рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ setBeanName() рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХреА рд╣реИ, рддреЛ рд╕реЗрдо рдЖрдИрдбреА рд╡рд┐рдзрд┐ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  6. рдпрджрд┐ рдмреАрди рдмреАрдирдлреИрдХреНрдЯрд┐рд╡рд╡реЗрдпрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЗрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ setBeanFactory() рдорд╛рдзреНрдпрдо рд╕реЗ рдмреАрди рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред
  7. рдпрджрд┐ рд╕реЗрдо ApplicationContextAware рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ setApplicationContext() рдорд╛рдзреНрдпрдо рд╕реЗ setApplicationContext() рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред
  8. BeanPostProcessor рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ (рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ), рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЗрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред postProcessBeforeInitialization() рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ, рдЖрдк рдЗрд╕реЗ (рдмреАрди) рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗрдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ (рдЧреБрдг, рдЖрджрд┐ рдХреА рд╕реНрдерд╛рдкрдирд╛)
  9. рдпрджрд┐ рдХреЙрд▓рдмреИрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЙрдиреНрд╣реЗрдВ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ @Bean рдПрдиреЛрдЯреЗрд╢рди рд╕реЗ @PostConstruct рдпрд╛ initMethod рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдПрдиреЛрдЯреЗрдЯ рдХреА рдЧрдИ рд╡рд┐рдзрд┐ рд╣реИред
  10. рдмреАрди рдЕрдм рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдпрд╣ ApplicationContext#getBean() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  11. рд╕рдВрджрд░реНрдн рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж close() ApplicationContext рд╕реЗ рд╡рд┐рдзрд┐ close() рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдмреАрди рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
  12. рдпрджрд┐ рдмреАрди рдореЗрдВ @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 рд╕рд╛рде @ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд░реНрдЧ рдХреЛ рдПрдиреЛрдЯреЗрдЯ рдХрд░реЗрдВред рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрд╕ рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдХреИрди рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╡рд░реНрдЧ рдФрд░ рдЗрд╕рдХреЗ рд╕рднреА рдЙрдк-рдкреИрдХреЗрдЬ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдЖрдк рд╕реНрдХреИрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдкреИрдХреЗрдЬ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдХреНрд╖рд╛рдПрдВ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 // 2  @Configuration(basePackages = {"soundsystem", "video"}) 

 //  @Configuration(basePackageClasses = "MyClass.class") 

рдСрдЯреЛ-рдлрд╛рдпрд░рд┐рдВрдЧ - рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдмрд┐рди рдХреЛ рд╕реНрдХреИрди рдпрд╛ рд░рдЦрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдЧрд╛ред
рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди @Autowire рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред


рд╕реНрдЯреАрд░рд┐рдпреЛрдЯрд╛рдЗрдк (рдПрдиреЛрдЯреЗрд╢рди-рд╕реНрдЯреАрд░рд┐рдпреЛрдЯрд╛рдЗрдк) рдХреНрдпрд╛ рд╣реИрдВ?

рд╕реНрдЯреАрд░рд┐рдпреЛрдЯрд╛рдЗрдк рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реБрдП рдПрдиреЛрдЯреЗрд╢рди рд╣реИрдВред
рд╕рднреА рд╕реНрдЯреАрд░рд┐рдпреЛрдЯрд╛рдЗрдкреНрд╕ рдореЗрдВ @Component рдПрдиреЛрдЯреЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИред


рдЕрдВрдЧрд░реВрдЯ рдПрдиреЛрдЯреЗрд╢рди рдЬреЛ рдСрдЯреЛ-рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдореНрдореАрджрд╡рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ
рдирд┐рдпрдВрддреНрд░рдХрдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЧ рд╕рд╛рдордиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ рд╣реИред
@RestControllerрдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЧ REST рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ рд╣реИред
рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ @ResponseBody рдПрдиреЛрдЯреЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
рд╕реЗрд╡рд╛рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЧ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рд╣реИред
рдХреЛрд╖рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧ рдПрдХ рднрдВрдбрд╛рд░ рд╣реИред
@ConfigurationрдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛ рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (@ рдмреАрди рд╡рд┐рдзрд┐рдпрд╛рдБ) рд╣реИрдВ

рдмрд┐рди рд╕реНрдХреЛрдк рдХреНрдпрд╛ рд╣реИрдВ? рдЙрдирдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рджреГрд╢реНрдпрддрд╛ рдХреНрдпрд╛ рд╣реИ?

рд╕реНрдХреЛрдк - рдЧреБрдВрдЬрд╛рдЗрд╢ред 2 рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдХреЛрдк рд╣реИрдВред


рдПрдХрд╛рдХреА рд╡рд╕реНрддреБ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдХреЛрдкред рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреЗрд╡рд▓ 1 рдмреАрди рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк
рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрд┐рддрдиреЗ рднреА рдмрд┐рди рдЙрджрд╛рд╣рд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ

рдФрд░ рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ 4 рд╕реНрдХреЛрдкред


рдкреНрд░рд╛рд░реНрдердирд╛
рд╕реНрдХреЛрдк - 1 HTTP рдЕрдиреБрд░реЛрдзред рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдмреАрди рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред
рдЕрдзрд┐рд╡реЗрд╢рди
рд╕реНрдХреЛрдк - 1 рд╕рддреНрд░ред рдкреНрд░рддреНрдпреЗрдХ рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдмреАрди рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред
рдЖрд╡реЗрджрди
рд╕реНрдХреЛрдк - рд╕рд░реНрд╡рд▓реЗрдЯрдХреЛрдЯреЗрдХреНрд╕реНрдЯ рдЬреАрд╡рди рдЪрдХреНрд░
рд╡реЗрдм рд╕реЙрдХреЗрдЯ
рд╕реНрдХреЛрдк - рд╡реЗрдмрд╕реНрдХреЗрдЯ рдЬреАрд╡рди рдЪрдХреНрд░

рд╕реНрдХреЛрдк рдХреЛ @Scope @Bean рддрд░реАрдХреЛрдВ рдкрд░ @Bean @Scope рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рд╡рд┐рднрд┐рдиреНрди рд╕реНрдХреЛрдк рдФрд░ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ?

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реНрдХреЛрдк рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдХреЗрд╡рд▓ 1 рдереНрд░реЗрдб рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред


рджреВрд╕рд░реА рдУрд░, рд╕рд┐рдВрдЧрд▓рдЯрди рд╕реНрдХреЛрдк, рдзрд╛рдЧрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред


рд╕реЗрдо рдХреИрд╕реЗ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ: рддреБрд░рдиреНрдд рдпрд╛ рдЖрд▓рд╕реА? рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХреИрд╕реЗ рдмрджрд▓реЗрдВ?

рд╕рд┐рдВрдЧрд▓рдЯрди рдмреАрдиреНрд╕ рдХреЛ рд╕реНрдХреИрди рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмреАрдиреНрд╕ рдЖрдорддреМрд░ рдкрд░ рдХреЗрд╡рд▓ рдЕрдиреБрд░реЛрдз рдкрд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред


рдЖрдк рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @Lazy рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕реЗ @ рдмреАрди рд╡рд┐рдзрд┐рдпреЛрдВ, @ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрдХреНрд╖рд╛рдУрдВ, рдпрд╛ @ рдШрдЯрдХ рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдПрдиреЛрдЯреЗрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ (рд╕рдЪреНрдЪрд╛ рдпрд╛ рдЧрд▓рдд) рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрд░рдВрднреАрдХрд░рдг рдпрд╛ рддреЛ рдЖрд▓рд╕реА рд╣реЛрдЧрд╛ рдпрд╛ рддреБрд░рдВрдд рд╣реЛрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ (рдпрд╛рдиреА, рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛), рд╕рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдпрджрд┐ рдПрдХ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд┐рди рджреВрд╕рд░реЗ рджрд╛рдпрд░реЗ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд┐рди рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рд╕рд┐рдВрдЧрд▓рдЯрди рдмреАрди рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдмреАрди рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдХреЗрд╡рд▓ prototype рдпрд╛ singleton рдХреЛ singleton рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ singleton ред
рдпрджрд┐ рдЖрдк рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд┐рд╕реА рднреА рд╕реЗрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдк рдХреЗрд╡рд▓ рд╕рд┐рдВрдЧрд▓рдЯрди рдпрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдПрдХ BeanFactoryPostProcessor рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
  • BeanFactoryPostProcessor рдмрд┐рди рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд┐рди рд╡рд┐рд╡рд░рдг рдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
  • рд╕реНрдкреНрд░рд┐рдВрдЧ рдХрдИ рдЙрдкрдпреЛрдЧреА BeanFactoryPostProcessor рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдкрддреНрддрд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рдЙрдирд╕реЗ BeanFactoryPostProcessor рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред
  • рдЖрдк BFPP рдХрд╛ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдкрдХреЛ рд╕реНрдереИрддрд┐рдХ @ рдмреАрди рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдХрд╕реНрдЯрдо BFPP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЖрдк рдореЗрдЯрд╛рдлрд╝рд╛рдЗрд▓реНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


 @Bean public static PropertySourcesPlaceholderConfigurer pspc() {    //,    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 рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ
  1. рдХрдВрдЯреЗрдирд░ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
  2. рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реЗрдо рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ (рдЙрд░реНрдл рдПрдХ рдХрдВрдЯреЗрдирд░) рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ
  3. рдпрджрд┐ рдХрдИ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ @Primary рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ @Primary , рддреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  4. рдЕрдЧрд░ @Autowire + Qualifier рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрдВрдЯреЗрдирд░ @Qualifier рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред
  5. рдЕрдиреНрдпрдерд╛, рдХрдВрдЯреЗрдирд░ рдЕрдкрдиреЗ рдирд╛рдо рдпрд╛ рдЖрдИрдбреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдШрдЯрдХ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред
  6. рдпрджрд┐ рдХрд┐рд╕реА рднреА рддрд░реАрдХреЗ рдиреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

рдХрдВрдЯреЗрдирд░ рдПрдХ AutowiredAnnotationBeanPostProcessor рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ DI рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдмреАрдирдлреИрдХреНрдЯреНрд░реАрдкреАрдкреА рдпрд╛ рдмреАрдПрдирдкреАрдкреА рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдпрджрд┐ рдЗрдВрдЬреЗрдХреНрдЯ рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдПрдХ рдЬреЗрдиреЗрд░рд┐рдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА, рд╕рдВрдЧреНрд░рд╣ рдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рд╣реИ, рддреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЙрди рд╕рднреА рдмреАрдиреНрд╕ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░реЗрдЧрд╛ рдЬреЛ рдЗрд╕ рд╕рд░рдгреА (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛) рдореЗрдВ рдЯрд╛рдЗрдк рдХреЗ рд╣реИрдВред рдирдХреНрд╢реЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреБрдВрдЬреА рдмреАрди рдирд╛рдо рд╣реЛрдЧреАред


 // ,   DI @Authowired(required = true/false) 

рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ DI рдХреИрд╕реЗ рдмрдирд╛рдПрдВ?

рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


  • рдбрд┐рдЬрд╛рдЗрдирд░
  • рдмреИрдард╛рдиреЗрд╡рд╛рд▓рд╛
  • рдлреАрд▓реНрдб рдЗрдВрдЬреЗрдХреНрд╢рди
  • рдореВрд▓реНрдп

@ рдХреНрд╡реЙрд▓рд┐рдлрд╛рдпрд░ рд╕рдкреНрд▓реАрдореЗрдВрдЯ @Autowired рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ?

рдбреАрдЖрдИ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд╡рд╛рд▓рд┐рдлрд╛рдпрд░ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред


 @Bean @Qualifier("SomeClass1") public SomeClass getField() {...} //тАж @Autowire @Qualifier("SomeField1") public SomeClass someField; 

рдпрджрд┐ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ (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; 

рдЗрд╕ рдЪрд░ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рдпрд╛ рджреГрд╢реНрдп рд╕реЗред


рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдкреАрдПрдо рдореЗрдВ рдкрд╛рдП рдЧрдП рд╕реБрдзрд╛рд░ рдпрд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рднреЗрдЬреЗрдВред

Source: https://habr.com/ru/post/hi470305/


All Articles