摘录自Spring文档的3.8节。
1.BeanPostProcessor
BeanPostProcessor接口有两个方法:
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;
可以在容器中的每个bean实例化之前和之后加上特殊的处理。Spring提供的RequiredAnnotationBeanPostProcessor就是实现该接口以判断容器里的bean里所标注annotation的属性是否被注入正确的值。
在容器中你可以配置多个实现BeanPostProcessor的bean,使用order属性来确定其执行顺序。
2.BeanFactoryPostProcessor
BeanFactoryPostProcessor接口和BeanPostProcessor接口的运行点是一样的,唯一不一样的就是处理的内容不同。BeanPostProcessor处理的是bean的内容,该接口处理的是在spring配置中的metadata。
Spring提供的处理${表达式}的类PropertyPlaceholderConfigurer就是该接口的实现。
<context:property-placeholder location="classpath:com/foo/jdbc.properties"/>
PropertyPlaceholderConfigurer不只是读取配置在location的properties文件里的属性,当在配置文件中找不到属性的时候,可以读取Java System的Properties,也可以从其属性properties里得到。可以通过设置该bean的systemPropertiesMode属性的值(always override, never override, and override only if the property is not found in the properties file specified)来设置设置对应表达式的值。
3.FactoryBean
分享到:
相关推荐
最近正在看spring官网,看Spring IOC的时候看Spring容器扩展点的时候发现了BeanPostProcessor 这个接口。下面是官方对它的详细描述: BeanPostProcessor接口定义了回调方法,您可以实现提供自己的(或覆盖容器的默认...
本篇内容将深入探讨Spring容器的基础、Bean的概念、依赖注入、Bean的范围、自定义接口、Bean定义的继承以及容器扩展点等重要知识点。 1. **简介** Spring容器是Spring框架的基石,主要分为两种类型:`BeanFactory`...
通过实现`BeanPostProcessor`接口并注册到Spring容器中,我们可以拦截bean的生命周期。 3. **事件监听器(Application Event)**: Spring提供了发布和监听应用事件的能力,这是一种让组件之间进行通信的扩展方式。...
Spring容器扩展机制的实现原理提供了多种扩展点,允许开发者在不同的阶段对容器进行自定义配置和修改。通过实现BeanFactoryPostProcessor和BeanPostProcessor接口,开发者可以在容器启动、bean实例化、Bean...
1. **Spring Core**:这是Spring框架的基础,提供了依赖注入(DI)和容器管理的功能。DI使得对象之间的依赖关系可以被外部化,使得代码更易于测试和维护。 2. **Spring Beans**:定义了Bean工厂,它是Spring的核心...
Bean的作用域决定了每次请求或创建时,Spring容器会返回多少个独立的实例。默认情况下,Spring以`singleton`作用域创建Bean,意味着在整个容器生命周期内,只会有一个实例。如果需要每次请求或调用时都创建新的实例...
Spring容器是Spring框架的核心组成部分,它负责管理对象的生命周期和对象之间的依赖关系。在这个自己实现的简单Spring容器项目中,我们可以深入理解Spring的核心原理,并学习如何构建一个基础的依赖注入(Dependency...
《Spring IOC容器实现分析》 在Java开发领域,Spring框架无疑是使用最为广泛的轻量级框架之一,其中的核心组件就是IOC(Inversion of Control)容器。本文将深入剖析Spring的IOC容器,理解其工作原理和重要功能,以...
普通对象使用spring容器中的对象的实现方法 普通对象使用spring容器中的对象的实现方法是spring框架中的一种常见的使用场景。在这个实现方法中,我们可以使用spring框架提供的依赖注入机制来将spring容器中的对象...
通过对IoC(Inversion of Control,控制反转)的实现,Spring容器将对象的创建和组装工作从应用代码中分离出来,使得应用更易于测试和维护。本文将从实现的角度,通过对外部接口、内部实现、组成部分和执行过程四个...
通过Spring IoC容器,开发者可以将对象间的依赖关系交给Spring容器进行管理,从而实现对象间的解耦。 #### 二、Spring IoC容器的搭建流程 根据题目中给出的部分内容,下面详细介绍如何基于Spring 3.0.5搭建一个...
实现该接口的类可以监听到Spring容器中发布的各种事件,如`ContextRefreshedEvent`(容器刷新完成)和`ContextClosedEvent`(容器关闭)。使用`@EventListener`注解的方法会被`EventListenerMethodProcessor`处理器解析...
`spring.web`库提供了与Servlet容器交互的基础,而`spring.webmvc`库则包含Spring MVC的控制器、视图解析和模型-视图-控制器(MVC)架构相关组件。 总结来说,Spring 3.0.5通过AOP提供对`HttpServletResponse`的...
- **Spring容器内事件发布的应用**:展示了如何在实际项目中使用Spring的事件发布功能。 - **多配置模块加载的简化**:通过配置文件的合并简化多模块的配置。 #### Spring IoC容器之扩展篇 - **Spring 2.5的基于...
这个点允许被用户自己扩展,用户可以在整个spring容器还没被初始化之前做一些事情。 扩展方式: public class TestApplicationContextInitializer implements ApplicationContextInitializer { @Override public ...
提取了Spring的核心逻辑,极大地简化了代码,并完善了Spring的核心功能,例如IoC和AOP,资源加载器,事件侦听器,类型转换,容器扩展点,Bean生命周期和作用域以及应用程序上下文,被保留。 如果这个项目可以为您...
在Spring框架中,定时任务是通过Spring的定时容器(Spring Task)实现的,它提供了一种灵活、可扩展的方式来执行周期性的任务。Spring Task也被称为Spring的调度器,它可以让我们在应用程序中添加定时任务,无需依赖...