ู…ุง ู‡ูŠ ุงู„ูุฑุต ุงู„ุชูŠ ูŠูˆูุฑู‡ุง Spring ู„ุชุฎุตูŠุต ุณู„ูˆูƒู‡ุŸ

ุชุญูŠุฉ ู„ู„ุฌู…ูŠุน. ุนู„ู‰ ุงุชุตุงู„ ูู„ุงุฏูŠุณู„ุงู ุฑูˆุฏูŠู†. ุญุงู„ูŠู‹ุง ุŒ ุฃู†ุง ุฑุฆูŠุณ ุฏูˆุฑุฉ 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 ุŒ ููŠ ุงู„ุทุฑูŠู‚ุฉ ุงู„ุฃูˆู„ู‰ ุงู„ุชูŠ ู†ุนูŠุฏ ุจู‡ุง ุงู„ููˆู„ ุงู„ูˆุงุฑุฏ ุŒ ูˆููŠ ุงู„ุทุฑูŠู‚ุฉ ุงู„ุซุงู†ูŠุฉ ุŒ ู†ุนูŠุฏ ูˆูƒูŠู„ู‹ุง ูŠู„ู ุงู„ู…ูƒุงู„ู…ุฉ ุฅู„ู‰ ุงู„ุทุฑูŠู‚ุฉ ุงู„ุฃุตู„ูŠุฉ ู…ุน ุชุณุฌูŠู„ ุงู„ูˆู‚ุช ูˆุงู„ุชู†ููŠุฐ.



ุชุนู„ู… ุงู„ู…ุฒูŠุฏ ุนู† ุงู„ุฏูˆุฑุฉ



All Articles