ุชุญูุฉ ููุฌู
ูุน. ุนูู ุงุชุตุงู ููุงุฏูุณูุงู ุฑูุฏูู. ุญุงูููุง ุ ุฃูุง ุฑุฆูุณ ุฏูุฑุฉ High Load Architect ูู OTUS ุ ูุฃุฏุฑุณ ุฃูุถูุง ุฏูุฑุงุช ูู ููุฏุณุฉ ุงูุจุฑู
ุฌูุงุช.ุจุงูุฅุถุงูุฉ ุฅูู ุงูุชุฏุฑูุณ ุ ุฃููู
ุฃูุถูุง ุจูุชุงุจุฉ ู
ูุงุฏ ุญููู ุงูุทุจุน ูุงููุดุฑ ูู
ุฏููุฉ OTUS ุนูู Haber ูุฃุฑูุฏ ุฃู ุชุชุฒุงู
ู ู
ุน ู
ูุงูุฉ ุงูููู
ูุฅุทูุงู ุฏูุฑุฉ "Developer on the Spring Framework" ุ ููู ุงูุขู ู
ูุชูุญุฉ ููุชูุธูู.
ุงูู
ูุฏู
ุฉ
ู
ู ูุฌูุฉ ูุธุฑ ุงููุงุฑุฆ ุ ูุจุฏู ุฑู
ุฒ ุงูุชุทุจูู ุงูุฐู ูุณุชุฎุฏู
Spring ุจุณูุทูุง ููุบุงูุฉ: ูุชู
ุงูุชุตุฑูุญ ุนู ุจุนุถ ุงููุงุตูููุง ุ ููุชู
ุชู
ููุฒ ุงููุตูู ุงูุฏุฑุงุณูุฉ ุจุงูุชุนูููุงุช ุงูุชูุถูุญูุฉ ุ ุซู
ูุชู
ุญูู ุงููุงุตูููุง ุนูุฏ ุงูุถุฑูุฑุฉ ุ ููู ุดูุก ูุนู
ู ุจุดูู ุฌูุฏ. ููู ูุฏู ุงููุงุฑุฆ ุงููุถููู ุณุคุงู: "ููู ูุนู
ูุ ู
ุงุฐุง ูุญุฏุซุ". ุณูุญุงูู ูู ูุฐู ุงูู
ูุงูุฉ ุงูุฅุฌุงุจุฉ ุนู ูุฐุง ุงูุณุคุงู ุ ูููู ููุณ ู
ู ุฃุฌู ุฅุฑุถุงุก ุงููุถูู ุงูุฎุงู
ู.ููุนุฑู ุฅุทุงุฑ ุงูุฑุจูุน ุจุฃูู ู
ุฑู ุจู
ุง ููู ุงูููุงูุฉ ููููุฑ ุฎูุงุฑุงุช ูุชุฎุตูุต ุณููู ุงูุฅุทุงุฑ. ูุฒุฎุฑ ุงูุฑุจูุน ุฃูุถูุง ุจุนุฏุฏ ู
ู ุงูููุงุนุฏ ุงูู
ุซูุฑุฉ ููุงูุชู
ุงู
ุฅูู ุญุฏ ู
ุง ูุชุทุจูู ุจุนุถ ุงูุชุนูููุงุช ุงูุชูุถูุญูุฉ (ุนูู ุณุจูู ุงูู
ุซุงู ุ ุงูู
ุนุงู
ูุงุช). ู
ู ุฃุฌู ููู
ู
ุนูู ูุฐู ุงูููุงุนุฏ ุ ุญุชู ุชุชู
ูู ู
ู ุงุดุชูุงููุง ุ ูุฃูุถูุง ูููู
ู
ุง ูู
ููู ุชููููู ูู ุงูุฑุจูุน ูููู ูู
ููู ุชููููู ุ ุชุญุชุงุฌ ุฅูู ููู
ุนุฏุฉ ู
ุจุงุฏุฆ ุชุดุบูู ูู
ุง ูู ู
ูุฌูุฏ ูู Spring ุชุญุช ุบุทุงุก ุงูู
ุญุฑู. ูู
ุง ุชุนูู
ุ ูุฅู ู
ุนุฑูุฉ ุงูุนุฏูุฏ ู
ู ุงูู
ุจุงุฏุฆ ุชุนูู ู
ู ู
ุนุฑูุฉ ุงูุนุฏูุฏ ู
ู ุงูุญูุงุฆู. ุฃูุชุฑุญ ุฃู ุชุชุนุฑู ุนูู ูุฐู ุงูู
ุจุงุฏุฆ ุฃุฏูุงู ุฅุฐุง ููุช ุ ุจุงูุทุจุน ุ ูุง ุชุนุฑููุง ุจุงููุนู.ุชููููุงุช ุงููุฑุงุกุฉ
ูู ุงูุจุฏุงูุฉ ุ ุชุญุชุงุฌ ุฅูู ุชุญููู ุงูุชููููุงุช ุงูู
ูุฌูุฏุฉ ูู ุงูุชุทุจูู ุงูุฎุงุต ุจู. ูุธุฑูุง ููุฌูุฏ ุนุฏุฉ ุฃููุงุน ู
ู ุงูุชููููุงุช (xml- ุ groovy- ุ java-config ุ ุงูุชูููู ุจูุงุกู ุนูู ุงูุชุนูููุงุช ุงูุชูุถูุญูุฉ) ุ ูุชู
ุงุณุชุฎุฏุงู
ุทุฑู ู
ุฎุชููุฉ ููุฑุงุกุชูุง. ุจุทุฑููุฉ ุฃู ุจุฃุฎุฑู ุ ูุชู
ุฌู
ุน ุฎุฑูุทุฉ ุงููู
ูุฐุฌ Map <Stringุ BeanDefinition> ุ ุญูุซ ูุชู
ุชุนููู ุฃุณู
ุงุก ุงูููู ูุชุนุฑููุงุช ุงูููู ุงูุฎุงุตุฉ ุจูู
. ูุงุฆูุงุช ูุฆุฉ BeanDefinition ูู ู
ุนููู
ุงุช ูุตููุฉ ุนู ุงููุงุตูููุง ูุชุญุชูู ุนูู ู
ุนุฑู ุงูููู ุ ูุงุณู
ู ุ ููุฆุชู ุ ูุทุฑู ุงูุชุฏู
ูุฑ ูุงูุจุฏุก.ุฃู
ุซูุฉ ุนูู ุงููุฆุงุช ุงูู
ุชุถู
ูุฉ ูู ูุฐู ุงูุนู
ููุฉ: GroovyBeanDefinitionReader ุ XmlBeanDefinitionReader ุ AnnotatedBeanDefinitionReader ุ ุชูููุฐ ูุงุฌูุฉ BeanDefinitionReader .ุฅุนุฏุงุฏ ุชุนุฑููุงุช Beandefitions
ูุฐุง ุ ูุฏููุง ุฃูุตุงู ุงููุงุตูููุง ุ ูููู ูุง ุชูุฌุฏ ูุงุตูููุง ููุณูุง ุ ูู
ูุชู
ุฅูุดุงุคูุง ุจุนุฏ. ูุจู ุฅูุดุงุก ุงููุงุตูููุง ุ ูููุฑ Spring ุงููุฏุฑุฉ ุนูู ุชุฎุตูุต ุงูุชุนุฑููุงุช ุงููุงุชุฌุฉ ุนู BeanDefinitions. ููุฐู ุงูุฃุบุฑุงุถ ุ ูุชู
ุงุณุชุฎุฏุงู
ูุงุฌูุฉ BeanFactoryPostProcessor . ุชุจุฏู ููุฐุง:public interface BeanFactoryPostProcessor {
void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;
}
ุชุณู
ุญ ู
ุนูู
ุฉ ุงูุทุฑููุฉ ููุฐู ุงููุงุฌูุฉ ุจุงุณุชุฎุฏุงู
ุฃุณููุจ getBeanDefinitionNames ุงูุฎุงุต ุจูุง ููุญุตูู ุนูู ุงูุฃุณู
ุงุก ุงูุชู ูู
ููู ู
ู ุฎูุงููุง ุงูุญุตูู ุนูู BeanDefinitions ู
ู ุงูุฎุฑูุทุฉ ูุชุญุฑูุฑูุง.ูู
ุงุฐุง ูุฏ ุชููู ููุงู ุญุงุฌุฉ ูุฐููุ ุงูุชุฑุถ ุฃู ุจุนุถ ุงููุงุตูููุง ุชุชุทูุจ ุชูุงุตูู ููุงุชุตุงู ุจุฃู ูุธุงู
ุฎุงุฑุฌู ุ ู
ุซู ูุงุนุฏุฉ ุงูุจูุงูุงุช. ูุฑูุฏ ุฅูุดุงุก ุงููุงุตูููุง ุจุงููุนู ู
ุน ุงูุชูุงุตูู ุ ูููู ุงูุชูุงุตูู ููุณูุง ูุชู
ุชุฎุฒูููุง ูู ู
ูู ุงูู
ูููุฉ. ูู
ูููุง ุชุทุจูู ุฃุญุฏ ู
ุนุงููุฑ BeanFactoryPostProcessors - PropertySourcesPlaceholderConfigurer ุงูููุงุณูุฉ ุ ูุงูุชู ุณุชุณุชุจุฏู ุฎุงุตูุฉ ุงูุงุณู
ูู BeanDefinition ุจุงูููู
ุฉ ุงููุนููุฉ ุงูู
ุฎุฒูุฉ ูู ู
ูู ุงูู
ูููุฉ. ุฃู ุฃููุง ุณุชุณุชุจุฏู ูู ุงููุงูุน ุงูููู
ุฉ ("ุงูู
ุณุชุฎุฏู
") ุจุงูููู
ุฉ ("ุงูุฌุฐุฑ") ูู BeanDefinion. ููู ููุฌุญ ูุฐุง ุ ูุญุชุงุฌ PropertySourcesPlaceholderConfigurer ุจุงูุทุจุน ุฅูู ุงูุงุชุตุงู. ูููู ูุฐุง ูุง ููุชุตุฑ ุนูู ุฐูู ุ ูู
ููู ุชุณุฌูู BeanFactoryPostProcessor ุงูุฎุงุต ุจู ุ ุญูุซ ูู
ููู ุชูููุฐ ุฃู ู
ูุทู ุชุญุชุงุฌู ูู
ุนุงูุฌุฉ BeanDefinitions.ุฎูู ุงููุงุตูููุง
ูู ูุฐู ุงูู
ุฑุญูุฉ ุ ูุฏููุง ุฎุฑูุทุฉ ุชุญุชูู ุนูู ุฃุณู
ุงุก ุงููุงุตูููุง ุญุณุจ ุงูู
ูุงุชูุญ ุ ูุชู
ุชูููู BeanDefinitions ุญุณุจ ุงูููู
. ุงูุขู ุชุญุชุงุฌ ุฅูู ุฅูุดุงุก ูุฐู ุงููุงุตูููุง. ูุฐุง ู
ุง ููุนูู BeanFactory . ูููู ููุง ูู
ููู ุฅุถุงูุฉ ุงูุชุฎุตูุต ุนู ุทุฑูู ูุชุงุจุฉ FactoryBean ูุชุณุฌููู . FactoryBean ูู ูุงุฌูุฉ ูููู
ูุฐุฌ:public interface FactoryBean {
T getObject() throws Exception;
Class<?> getObjectType();
boolean isSingleton();
}
ูุจุงูุชุงูู ุ ูููู
BeanFactory ุจุฅูุดุงุก ููู ุจููุณู ุฅุฐุง ูู
ููู ููุงู FactoryBean ูุชูุงูู ู
ุน ูุฆุฉ ุงูููู ุ ุฃู ูุทูุจ ู
ู FactoryBean ุฅูุดุงุก ูุฐุง ุงูููู. ููุงู ูุงุฑู ุจุณูุท: ุฅุฐุง ูุงู ูุทุงู ุงููุงุตูููุงุก ู
ููุฑุฏูุง ุ ูุณูุชู
ุฅูุดุงุก ุงูููู ูู ูุฐู ุงูู
ุฑุญูุฉ ุ ุฅุฐุง ูุงู ุงููู
ูุฐุฌ ุงูุฃููู ุ ูููู
ุง ุงุญุชุงุฌ ูุฐุง ุงูููู ุ ุณูุชู
ุทูุจู ู
ู BeanFactory.ููุชูุฌุฉ ูุฐูู ุ ูุญุตู ู
ุฑุฉ ุฃุฎุฑู ุนูู ุฎุฑูุทุฉ ุ ููููุง ู
ุฎุชููุฉ ููููุงู ุจุงููุนู: ุชุญุชูู ุงูู
ูุงุชูุญ ุนูู ุฃุณู
ุงุก ุงููุงุตูููุง ูููู
ุงููุงุตูููุง ููุณูุง. ูููู ูุฐุง ููุทุจู ููุท ุนูู ุงูุฃุบุงูู ุงููุฑุฏูุฉ.ุชูููู ุงููุงุตูููุง
ุงูุขู ุชุฃุชู ุงูู
ุฑุญูุฉ ุงูุฃูุซุฑ ุฅุซุงุฑุฉ ููุงูุชู
ุงู
. ูุฏููุง ุฎุฑูุทุฉ ุชุญุชูู ุนูู ุงููุงุตูููุง ุงูุชู ุชู
ุฅูุดุงุคูุง ุ ูููู ูู
ูุชู
ุชูููู ูุฐู ุงููุงุตูููุง ุจุนุฏ. ุฃู ุฃููุง ูู
ูุนุงูุฌ ุงูุชุนูููุงุช ุงูุชูุถูุญูุฉ ุงูุชู ุชุญุฏุฏ ุญุงูุฉ ุงูููู: Autowired ุ Value. ูู
ุง ุฃููุง ูู
ูุนุงูุฌ ุงูุชุนูููุงุช ุงูุชูุถูุญูุฉ ุงูุชู ุชุบูุฑ ุณููู ุงูููู: Transactional ุ Async. ุชุณู
ุญ ููุง BeanPostProcessors ุ ุงูุชู ูุชู
ุชูููุฐูุง ู
ุฑุฉ ุฃุฎุฑู ูููุงุฌูุฉ ุงูู
ูุงุจูุฉ ุ ุจุญู ูุฐู ุงูู
ุดููุฉ :public interface BeanPostProcessor {
Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;
Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;
}
ูุฑู ุทุฑููุชูู ุจุฃุณู
ุงุก ู
ุฎููุฉ ูููููุง ุดุงู
ูุฉ. ุชุฃุฎุฐ ููุชุง ุงูุทุฑููุชูู ุญุจุฉ ููู ูู
ุฏุฎู ุ ูู
ููู ู
ู ุฎูุงููุง ุฃู ุชุณุฃู ุนู ุงููุฆุฉ ุงูุชู ูู ุนูููุง ุ ุซู
ุชุณุชุฎุฏู
ูุงุฌูุฉ ุจุฑู
ุฌุฉ ุงูุชุทุจููุงุช Reflection API ูู
ุนุงูุฌุฉ ุงูุชุนูููุงุช ุงูุชูุถูุญูุฉ. ุทุฑู ุงูููู ุงูู
ุฑุชุฌุนุฉ ุ ุฑุจู
ุง ูุญู ู
ุญููุง ุงููููู.ููู ุญุจุฉ ูุจู ูุถุนูุง ูู ุงูุณูุงู ุ ูุญุฏุซ ู
ุง ููู: ูุชู
ุชุดุบูู ุทุฑู postProcessBeforeInitialization ูุฌู
ูุน BeanPostProcessors ุ ุซู
ูุชู
ุชุดุบูู ุทุฑููุฉ ุงูุชููุฆุฉ ุ ุซู
ูุชู
ุชุดุบูู ุทุฑู postProcessAfterInitialization ูุฌู
ูุน BeanPostProcessors ุฃูุถูุง.ููุงุชูู ุงูุทุฑููุชูู ุฏูุงูุงุช ู
ุฎุชููุฉ: postProcessBeforeInitialization ุนู
ููุงุช ุงูุชุนูููุงุช ุงูุชูุถูุญูุฉ ููุญุงูุฉ ุ postProcessAfterInitialization ุนู
ููุงุช ุงูุณููู ุ ูุฃูู ูุชู
ุงุณุชุฎุฏุงู
ุงููููู ูู
ุนุงูุฌุฉ ุงูุณููู ุ ู
ู
ุง ูุฏ ูุคุฏู ุฅูู ููุฏุงู ุงูุชุนูููุงุช ุงูุชูุถูุญูุฉ. ูุฐุง ูู ุงูุณุจุจ ูู ุชุบูุฑ ุงูุณููู ูู ุงูู
ุฑูุฒ ุงูุฃุฎูุฑ.ุฃูู ุงูุชุฎุตูุตุ ูู
ูููุง ูุชุงุจุฉ ุดุฑุญูุง ุ BeanPostProcessor ูุฐูู ุ ูุณูููู
ุงูุฑุจูุน ุจู
ุนุงูุฌุชู. ูู
ุน ุฐูู ุ ููู ูุนู
ู BeanPostProcessor ุ ูุฌุจ ุฃูุถูุง ุชุณุฌููู ุจุงุนุชุจุงุฑู ุญุจุฉ ููู.ุนูู ุณุจูู ุงูู
ุซุงู ุ ูุชุถู
ูู ุฑูู
ุนุดูุงุฆู ูู ุงูุญูู ุ ูููู
ุจุฅูุดุงุก ุชุนููู ุชูุถูุญู InjectRandomInt (ู
ุนูู ูู ุงูุญููู) ุ ูุฅูุดุงุก ูุชุณุฌูู InjectRandomIntBeanPostProcessor ุ ูู ุงูุทุฑููุฉ ุงูุฃููู ุงูุชู ูุนุงูุฌ ุงูุชุนููู ุงูุชูุถูุญู ุงูุฐู ุชู
ุฅูุดุงุคู ุ ููู ุงูุทุฑููุฉ ุงูุซุงููุฉ ุ ูุนูุฏ ุจุจุณุงุทุฉ ุงูููู ุงููุงุฑุฏ.ูู
ูู ุชุนุฑูู ุงููุงุตูููุง ุ ูู
ุจุฅูุดุงุก ุชุนููู ุชูุถูุญู ููู
ูู ุงูุดุฎุตู ูุจุซ ุนูู ุงูุฃุณุงููุจ ุ ูุฅูุดุงุก ูุชุณุฌูู ProfileBeanPostProcessor ุ ูู ุงูุทุฑููุฉ ุงูุฃููู ุงูุชู ูุนูุฏ ุจูุง ุงูููู ุงููุงุฑุฏ ุ ููู ุงูุทุฑููุฉ ุงูุซุงููุฉ ุ ูุนูุฏ ูููููุง ููู ุงูู
ูุงูู
ุฉ ุฅูู ุงูุทุฑููุฉ ุงูุฃุตููุฉ ู
ุน ุชุณุฌูู ุงูููุช ูุงูุชูููุฐ.
ุชุนูู
ุงูู
ุฒูุฏ ุนู ุงูุฏูุฑุฉ