рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрджрд░реНрдн рд╕реЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреАрди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

рд╢реБрдн рджреЛрдкрд╣рд░, Khabrovites!

рдЗрд╕ рдЕрдиреБрдЪреНрдЫреЗрдж рдореЗрдВ, рдореИрдВ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЕрдХреНрд╕рд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╣реЛрддреА рд╣реИрдВред рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рд╡рд╕рдВрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдРрд╕реА рдЧрд▓рддреА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рддреНрд░реБрдЯрд┐ рдХрд╛рдлреА рдЖрдо рд╣реИред

рд╕рдорд╕реНрдпрд╛ рдХрдерди


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

рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рд╕реЗрдо рдХреА рдХрдИ рдкреНрд░рддрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЙрдирдХреЗ рдкрд╛рд╕ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╕рд┐рдВрдЧрд▓рдЯрди рд╣реЛред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреАрдиреНрд╕ рдХреА рд╡рд┐рдЪрд╛рд░рд╣реАрди рдирдХрд▓ рдЗрд╕ рддрдереНрдп рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддреА рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд┐рд╕реА рднреА рдЬрд╛рд░ рдХреЗ рд╕рднреА рдмреАрдиреНрд╕ рдХреА рдПрдХ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдпрд╛рдВ рдмрдирд╛рдПрдЧрд╛, рдЬреЛ рдХрд┐ рдЖрд╡реЗрджрди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╕реЗ рднрд░рд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрд╛рд╣рд░реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрджрд░реНрдн рд╕реЗ рдмреАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг


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



рдорд╛рди рд▓реАрдЬрд┐рдП, рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдирдВрдмрд░рдЧрд░реНрдиреЗрдЯрд░ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕реЗрдо рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рднреА рдорд╛рди рд▓реЗрдВ рдХрд┐ NumberGenerator рд╡рд░реНрдЧ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред org.example.kruchon.generators, рдЬреЛ рдорд╛рди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХреБрдЫ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред



рдЗрд╕ рдмреАрди рдореЗрдВ рдПрдХ рд░рд╛рдЬреНрдп рд╣реИ - рдЗрдВрдЯ рдХрд╛рдЙрдВрдЯ рдлрд╝реАрд▓реНрдбред

package org.example.kruchon.calculators public class NumberGenerator { private int count = 0; public synchronized int next() { return count++; } } 

рдЗрд╕ рдмреАрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЬреЗрдирд░реЗрдЯрд░реНрд╕рдСрдирдлрд┐рдЧрд░реЗрд╢рди рдЙрдк-рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

 @Configuration public class GeneratorsConfiguration { @Bean public NumberGenerator numberGenerator() { return new NumberGenerator(); } ... } 

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

 @Configuration @Import({GeneratorsConfiguration.class, ...}) public class ExternalContextConfiguration { ... } 

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

рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди 1. рдмрд╛рд╣рд░реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрджрд░реНрдн рдХреЗ рдореБрдЦреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛


рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рдирд┐рд░реНрдгрдп рдЬреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

 @Configuration @Import(ExternalContextConfiguration.class) public class CurrentContextConfiguration { ... } 

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

рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди 2. рдмрд╛рд╣рд░реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрджрд░реНрдн рдХрд╛ рдЖрдпрд╛рдд рдЙрдкрд╕рдВрдХреНрд░рдордг


рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЧрд▓рдд рд╣реИ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЕрдХреНрд╕рд░ рд╕рд╛рдордиреЗ рдЖрддрд╛ рд╣реИред

 @Configuration @Import(GeneratorsConfiguration.class) public class CurrentContextConfiguration { ... } 

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

рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди 3. рдмреАрди рдореЗрдВ рд╕реАрдзреЗ рдЗрдВрдЬреЗрдХреНрд╢рди рджреЗрдЦреЗрдВ, рдЬрд╣рд╛рдВ рд╣рдо рдирдВрдмрд░рдЧрдиреЗрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ


 public class OrderFactory { private final NumberGenerator numberGenerator; public OrderFactory() { ApplicationContext externalApplicationContext = getExternalContext(); numberGenerator = externalApplicationContext.getBean(NumberGenerator.class); } public Order create() { Order order = new Order(); int id = numberGenerator.next(); order.setId(id); order.setCreatedDate(new Date()); return order; } private ApplicationContext getExternalContext(){ ... } } 

рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ, рдЧреБрдВрдЬрд╛рдЗрд╢ рд╕рд┐рдВрдЧрд▓рдЯрди рд╡рд╛рд▓реЗ рд╕реЗрдо рдХреЗ рджреЛрд╣рд░рд╛рд╡ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджрд░рдЕрд╕рд▓, рдЕрдм рд╣рдо рд╕реЗрдо рдХреЛ рдПрдХ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрджрд░реНрдн рд╕реЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ!

рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рд╕реЗ:

  1. рд╡рд┐рдХрд╕рд┐рдд рд╡рд░реНрдЧ рдФрд░ рдЗрд╕рдХреА рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреА рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд╣реИред
  2. рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реЗрдо рдореЗрдВ рдирдВрдмрд░рдЧрд┐рдиреЗрдЯрд░ рд╡рд░реНрдЧ рдХреА рдмреАрди рдХреЗ рд╕реНрд╡рдд: рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫреЛрдбрд╝рдХрд░ред
  3. рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рд┐рдВрдЧрд▓рдЯрди рдмреАрди рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реБрдХрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рдирд╣реАрдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рддрд░реНрдХрд╕рдВрдЧрдд рд╕рдорд╛рдзрд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдирд╛рдбрд╝реА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреА рддрд░рд╣ рдЕрдзрд┐рдХ рд╣реИред

рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдмрд╛рд╣рд░реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрджрд░реНрдн рд╕реЗ рдмреАрди рдХреЛ рдареАрдХ рд╕реЗ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рд╕рдорд╛рдзрд╛рди 1. рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдмрд╛рд╣рд░реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрджрд░реНрдн рд╕реЗ рдмреАрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ


рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ 3 рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди рд╣реИ: рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдмрд╛рд╣рд░реА рд╕рдВрджрд░реНрдн рд╕реЗ рд▓реБрдХрдЕрдк рдХрд░рдХреЗ рдПрдХ рдмреАрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕реАрдзреЗ рдмреАрди рдореЗрдВ рдирд╣реАрдВред

 @Configuration public class CurrentContextConfiguration { @Bean public NumberGenerator numberGenerator() { ApplicationContext externalApplicationContext = getExternalContext(); return externalApplicationContext.getBean(NumberGenerator.class); } private ApplicationContext getExternalContext(){ ... } } 

рдЕрдм рд╣рдо рдЗрд╕ рд╕реЗрдо рдХреЛ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕реЗрдо рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдорд╛рдзрд╛рди 2. рдмрд╛рд╣рд░реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрджрд░реНрдн рдЬрдирдХ рдмрдирд╛рдПрдВ


рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрд╛рд╣рд░реА рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреА рд╣реИред рдРрд╕рд╛ рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╕рд╣рд╛рдпрдХ рд╕реЗрдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЗрди рдлрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореВрд▓ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕рднреА рдмреАрди рдХреЛ рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕реЗрдо рдХреЛ рд╡рд░реНрддрдорд╛рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрджрд░реНрдн рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

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

 public AbstractApplicationContext(ApplicationContext parent) { ... } 

рдпрд╛ рд╕реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 public void setParent(ApplicationContext parent) { ... } 

рдпрджрд┐ рдЖрд╡реЗрджрди рд╕рдВрджрд░реНрдн xml рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

 public ClassPathXmlApplicationContext(String[] configLocations, ApplicationContext parent) throws BeansException { ... } 

рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреАрдиреНрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╕рдордп рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ, рд▓реЗрдЦ рдореЗрдВ рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдФрд░ рдЙрди рдмреАрдиреНрд╕ рдХреЛ рдХреЙрдкреА рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬрд┐рдирдореЗрдВ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╕рд┐рдВрдЧрд▓рдЯрди рд╣реИред рдореБрдЭреЗ рдЖрдкрдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА!

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


All Articles