рд╡рд╕рдВрдд рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ?

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░ред рд╡реНрд▓рд╛рджрд┐рд╕реНрд▓рд╛рд╡ рд░реЛрдбрд┐рди рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдУрдЯреАрдпреВрдПрд╕ рдореЗрдВ рд╣рд╛рдИ рд▓реЛрдб рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ рдХреЛрд░реНрд╕ рдХрд╛ рдкреНрд░рдореБрдЦ рд╣реВрдВ, рдФрд░ рдореИрдВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдкрд╛рдареНрдпрдХреНрд░рдо рднреА рдкрдврд╝рд╛рддрд╛ рд╣реВрдВред

рдкрдврд╝рд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдПрдХ рдмреНрд▓реЙрдЧ рдХреЙрдкреАрд░рд╛рдЗрдЯ рд╕рд╛рдордЧреНрд░реА OTUS Habr├й рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЖрдЬ рдХрд╛ рд▓реЗрдЦ рдореИрдВ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ "рдбреЗрд╡рд▓рдкрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдСрди рд╕реНрдкреНрд░рд┐рдВрдЧ" , рдЬреЛ рдЕрднреА рд╕реЗрдЯ рдЦреБрд▓рд╛ рд╣реИред




рдкрд░рд┐рдЪрдп


рдкрд╛рдардХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╕реНрдкреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдХреЛрдб рдХрд╛рдлреА рд╕рд░рд▓ рджрд┐рдЦрддрд╛ рд╣реИ: рдХреБрдЫ рд╕реЗрдо рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдмреАрдиреНрд╕ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдкрд╛рдардХ рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ: тАЬрдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?"ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред

рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд▓рдЪреАрд▓рд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕реНрдкреНрд░рд┐рдВрдЧ рднреА рдХреБрдЫ рдПрдиреЛрдЯреЗрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрд░реНрде рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдпрд╣ рднреА рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд╕рдВрдд рдореЗрдВ рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИ, рдЖрдкрдХреЛ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рд╡рд╕рдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рдХреЗ рдХрдИ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХрдИ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЬреНрдЮрд╛рди рдХрдИ рддрдереНрдпреЛрдВ рдХреЗ рдЬреНрдЮрд╛рди рд╕реЗ рдЫреВрдЯ рджреЗрддрд╛ рд╣реИред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЗрди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдпрджрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред

рдкрдврд╝рдирд╛ рд╡рд┐рдиреНрдпрд╛рд╕


рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЖрдкрдХреЛ рдЙрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИрдВ (xml-, groovy-, рдЬрд╛рд╡рд╛-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдПрдиреЛрдЯреЗрд╢рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди), рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп, рдкреНрд░рдкрддреНрд░ рдХрд╛ рдПрдХ рдирдХреНрд╢рд╛ <рд╕реНрдЯреНрд░реАрдВрдЧ, рдмреАрдирдбрд┐рдлрд┐рдирд┐рд╢рди> рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗрдо рдХрд╛ рдирд╛рдо рдЙрдирдХреА рд╕реЗрдо рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреАрдирдбрд┐рдлрд┐рдиреЗрд╢рди рдХреНрд▓рд╛рд╕ рдХреА рд╡рд╕реНрддреБрдПрдВ рд╕реЗрдо рдХреА рдореЗрдЯрд╛-рдЬрд╛рдирдХрд╛рд░реА рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдмреАрди рдХреА рдЖрдИрдбреА-рдЖрдИрдбреА, рдЙрд╕рдХрд╛ рдирд╛рдо, рдЙрд╕рдХреА рдХрдХреНрд╖рд╛, рдирд╖реНрдЯ-рдФрд░ рдЗрдирд┐рдЯ-рд╡рд┐рдзрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг: GroovyBeanDefinitionReader, XmlBeanDefinitionReader, AnnotatedBeanDefinitionReader, BeanDefinitionReader рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдирд╛ ред

рдмреАрдбрд┐рдлрд╛рдЗрдирдореЗрдВрдЯреНрд╕ рдХреА рд╕реНрдерд╛рдкрдирд╛


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

public interface BeanFactoryPostProcessor {
    void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;
}

рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдЙрди рдирд╛рдореЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ getBeanDefinitionNames рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдк рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ BeanDefinitions рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдмреАрдиреНрд╕ рдмрдирд╛рдирд╛


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

public interface FactoryBean {
    T getObject() throws Exception;
    Class<?> getObjectType();
    boolean isSingleton();
}

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

рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдПрдХ рдирдХреНрд╢рд╛ рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ: рдХреБрдВрдЬрд┐рдпреЛрдВ рдореЗрдВ рдлрд▓рд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдФрд░ рдлрд▓рд┐рдпреЛрдВ рдХреЗ рдореВрд▓реНрдп рд╕реНрд╡рдпрдВ рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдПрдХрд▓ рдХреЗ рд▓рд┐рдП рд╕рдЪ рд╣реИред

рдмреАрдиреНрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛


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

public interface BeanPostProcessor {
    Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;
    Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;
}

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

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

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

рдЕрдиреБрдХреВрд▓рди рдХрд╣рд╛рдБ рд╣реИ? рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдПрдиреЛрдЯреЗрд╢рди, рдмреАрдирдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЗрд╕реЗ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░реЗрдВрдЧреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмреАрдирдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдмреАрди рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдкрдВрдЬреАрдХреГрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдлрд╝реАрд▓реНрдб рдореЗрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ InjectRandomInt рдПрдиреЛрдЯреЗрд╢рди (рдлрд╝реАрд▓реНрдб рдкрд░ рд▓рдЯрдХрд╛ рд╣реБрдЖ) рдмрдирд╛рддреЗ рд╣реИрдВ, рдПрдХ InjectRandomIntBostPostProcessor рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ, рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдиреЛрдЯреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдмрд╕ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдмреАрди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред

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



рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВ



All Articles