Skip to the content.

深入学习 Spring Web 开发 —— BeanDefinition(下)

[TOC]

上一篇文章,我们探讨了什么是 BeanDefinition,本文,我们主要探讨 BeanDefinition 是如何起作用的。

BeanDefinition 是如何起作用的

在前面的文章中,我们已经了解过项目中的 Bean 是如何被一步步收集起来的(见:深入学习 Spring Web 开发 —— 应用启动),收集起来之后就会被注册为 BeanDefinition。BeanDefinition 除了可以通过自动注册得到,也可以通过手动注册得到(见:深入学习 Spring Web 开发 —— Bean 的声明)。下面,我们先了解一下 BeanDefinition 的注册是如何进行的。

Bean 的注册过程

我们先回忆一下前面的文章中提到过的 Bean 的手动注册:

public class GenericBeanDefinitionExample {

    public static void main(String[] args) {
        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
        GenericBeanDefinition beanDefinition = new GenericBeanDefinition();
        beanDefinition.setBeanClass(MyBean2.class);
        beanDefinition.getPropertyValues().addPropertyValue("field", "sample-value");
        beanFactory.registerBeanDefinition("myBean", beanDefinition);

        MyBean2 bean = beanFactory.getBean(MyBean2.class);
        bean.doSomething();
    }

}

顺着这段代码,我们从 registerBeanDefinition() 方法开始,一步步跟进,最终就可以了解清楚整个注册过程了。