springboot是怎么加载beanDefinition的
时间: 2024-05-22 21:11:54 浏览: 157
在 Spring Boot 中,Bean 的加载是通过 BeanDefinitionReader 实现的。BeanDefinitionReader 负责读取 Bean 的定义信息,然后将其注册到 BeanFactory 中。Spring Boot 中的 BeanDefinitionReader 实现类是 XmlBeanDefinitionReader、AnnotationBeanDefinitionReader 和 GroovyBeanDefinitionReader。
- XmlBeanDefinitionReader:用于加载 XML 文件中定义的 Bean。
- AnnotationBeanDefinitionReader:用于扫描 @Component、@Service、@Repository 和 @Controller 等注解标记的类,并将其注册为 Bean。
- GroovyBeanDefinitionReader:用于加载 Groovy 语言编写的 Bean 的定义信息。
在 Spring Boot 启动时,会创建一个 AnnotationConfigApplicationContext 对象,该对象会调用 refresh() 方法,该方法会创建一个 BeanDefinitionReader 对象,并调用其 loadBeanDefinitions() 方法加载 Bean 的定义信息。同时,Spring Boot 也提供了多种方式来自定义 Bean 的加载方式,如自定义 BeanDefinitionRegistryPostProcessor 和 BeanFactoryPostProcessor 等。
阅读全文