承接上文
IObjectPostProcessor(对象后处理器)
前提是实现接口的对象注册给当前容器
C#:
- 通过继承AbstractObjectFactory对象的AddObjectPostProcessor方法来添加
- 添加对象配置在xml中用IApplicationContext自动注册
java:
- 通过配置在Javabean的xml中用ApplicationContext自动注册
- 调用ConfigurableBeanFactory的addBeanPostProcessor方法
接口名称分别为.net的Spring.Objects.Factory.Config.IObjectPostProcessor 与Java的org.springframework.beans.factory.config.BeanPostProcessor
- postProcessBeforeInitialization每个对象的初始化方法被调用之前执行 (不过在c#中必须要有初始化方法,,初始化方法可以是IInitializingObject接口 的AfterPropertiesSet方法,也可以是init-method属性指定的任意方法)
- postProcessAfterInitialization在对象的初始化方法返回之后执行
- 第一个参数都是当前实例,第二个参数是在容器中的名称,返回值是当前要设置的实例
第一点的第一个子接口.net的Spring.Objects.Factory.Config.IInstantiationAwareObjectPostProcessor 与Java的org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor
- postProcessBeforeInstantiation如果返回值不为null是一个对象,那么就是返回这个对象, 其中的factory-method方法就是这个方法来实现的,返回null就不改变原来的对象
- postProcessAfterInstantiation返回false会阻止对对象的属性设置
- postProcessPropertyValues设置当前对象的属性,可以对在xml配置的属性再次编辑 返回值类型必须是第一个参数的对象类型
第一点的第二个子接口.net的Spring.Objects.Factory.Config.IDestructionAwareObjectPostProcessor 与Java的org.springframework.beans.factory.config.DestructionAwareBeanPostProcessor
- PostProcessBeforeDestruction为对象销毁的时候
执行顺序为:
- postProcessBeforeInstantiation
- postProcessAfterInstantiation
- postProcessPropertyValues
- postProcessBeforeInitialization(父接口)
- 调用初始化方法
- postProcessAfterInitialization(父接口)
- postProcessBeforeDestruction