前面分别对PropertyPlaceholderConfigurer和PropertyOverrideConfigurer的使用方法进行了介绍。但是有个问题,不知道大家看到没有?我们在配置文件中只是定义了一个bean,
<bean class="org.springframework.beans.factory.config.PropertyOverrideConfigurer">
<property name="location" value="propertyOverrideHolder.properties"/>
</bean>
连id都没有给出。而且这个bean并没有被别的bean所引用。那么,Spring的bean factory是怎么知道要从这个bean中获取信息的呢?
解开源码发现,上面说的两个类,它们都间接的实现了BeanFactoryPostProcessor接口,这个接口很特别,
当 Spring加载任何实现了这个接口的bean的配置时,都会在bean factory载入所有的bean的配置之后,执行 postProcessBeanFactory方法。在PropertyResourceConfigurer类中实现了postProcessBeanFactory方法,在方法中先后调用了 mergeProperties,convertProperties,processProperties这三个方法,分别得到配置,将得到的配置转换为合适的类型,最后将配置内容告知BeanFactory。
正是通过实现BeanFactoryPostProcessor接口,BeanFactory会在实例化任何bean之前获得配置信息,从而能够正确解析bean描述文件中的变量引用。
分享到:
相关推荐
最后,Spring的容器提供了多种扩展点,如BeanPostProcessor、BeanFactoryPostProcessor等,这使得开发者可以在容器初始化阶段自定义逻辑。在3.2.13.RELEASE中,我们可以探索这些扩展点的实现,以及如何利用它们增强...
2. **AOP(Aspect Oriented Programming)**:Spring提供了面向切面编程的支持,使得我们可以编写横切关注点,如日志、事务管理等,而无需污染业务代码。`org.springframework.aop`包是实现AOP的基础,包括代理模式...
### Spring框架核心知识点详解:Bean生命周期与AOP深入解析 #### Bean生命周期管理 Spring框架中的Bean生命周期管理是其核心功能之一,它通过一系列的接口和类来实现对Bean的创建、初始化、销毁等过程的控制。以下...
1. 容器扩展:Spring 提供了 BeanPostProcessor 和 BeanFactoryPostProcessor 接口,允许用户自定义扩展点,实现更精细的控制。 2. Annotation-based Configuration:除了 XML 配置外,4.3.6 版本更加强调注解驱动的...
本篇内容将深入探讨Spring容器的基础、Bean的概念、依赖注入、Bean的范围、自定义接口、Bean定义的继承以及容器扩展点等重要知识点。 1. **简介** Spring容器是Spring框架的基石,主要分为两种类型:`BeanFactory`...
com-spring-ioc-demo:源码主要是学习Spring IOC的原理,以及对Bean的注册及控制,主要运用以下类对Spring进行扩展学习:BeanPostProcessor,BeanFactoryAware,BeanNameAware,ApplicationContextAware,FactoryBean...
BeanFactoryPostProcessor接口是Spring框架提供的一个接口,用于扩展Spring容器的功能。该接口只有一个方法`postProcessBeanFactory`,该方法在容器加载完成之后被调用,可以用来改变容器中的配置或做一些初始化工作...
Spring框架中的BeanFactoryPostProcessor是一个非常重要的扩展点,它允许开发者在BeanFactory标准初始化之后对其进行定制和修改。下面我们将详细介绍BeanFactoryPostProcessor的扩展原理和使用方法。 首先,...
BeanFactoryPostProcessor接口是Spring提供的一种扩展点,它允许在容器实例化相应对象之前,对注册到容器的BeanDefinition所保存的信息做一些额外的操作,例如修改bean定义的某些属性或者增加其他信息等。...
Spring框架的核心是其IoC容器,该容器负责管理应用程序中的对象及其依赖关系。 #### 1.2 使用场景 Spring框架可以应用于多种不同的场景,包括但不限于: - **Web开发**:Spring MVC提供了强大的功能来支持构建基于...
- **Bean的高级功能**:如bean的继承、FactoryBean、BeanPostProcessor和BeanFactoryPostProcessor等,增强了Bean的灵活性和扩展性。 4. **整合其他技术** - **MVC框架**:Spring MVC提供了模型-视图-控制器的...
本笔记将深入探讨Spring的源码学习,重点理解其核心组件和生命周期。 首先,Spring通过反射机制来实例化对象。在Java中,我们可以使用`Class.forName()`方法根据完全限定类名获取类对象,或者通过已有对象的`...
1.8 容器扩展点 Spring框架允许开发者扩展容器行为,这包括自定义BeanPostProcessor、BeanFactoryPostProcessor等。 在Spring框架的学习和应用中,开发者需要深刻理解这些核心知识点,只有这样,才能充分利用Spring...
本文主要探讨Spring扩展原理,特别是`BeanFactoryPostProcessor`、`BeanDefinitionRegistryPostProcessor`以及`ApplicationListener`这三种核心扩展点。 首先,`BeanFactoryPostProcessor`是Spring IOC容器中的一种...
- **3.8 容器扩展点** - **3.8.1 使用BeanPostProcessor定制bean** - BeanPostProcessor接口允许开发者在bean初始化前后执行自定义操作。 - **3.8.2 使用BeanFactoryPostProcessor定制配置元数据** - 可以修改...
- Spring框架自发布以来迅速成为最受欢迎的Java企业级应用开发框架之一,其核心价值在于提供了轻量级的IoC容器,极大地简化了Java EE应用程序的开发过程。 - **Spring框架的特点** - 实用主义:Spring通过简洁的...
**4.8 容器扩展点** - **4.8.1 使用BeanPostProcessor来自定义bean** - 介绍了BeanPostProcessor接口的使用。 - 包括了两个示例:Hello World和RequiredAnnotationBeanPostProcessor。 - **4.8.2 使用...
11. Spring的扩展点:包括BeanFactoryPostProcessor、BeanPostProcessor、InstantiationAwareBeanPostProcessor等。 二、Spring Beans 12. Spring beans:是Spring框架中的核心组件,提供了一个通用的方式来创建和...