前提是實現接口的對象註冊給當前容器 html
C#: java
- 經過繼承AbstractObjectFactory對象的AddObjectPostProcessor方法來添加
- 添加對象配置在xml中用IApplicationContext自動註冊
java: spring
- 經過配置在Javabean的xml中用ApplicationContext自動註冊
- 調用ConfigurableBeanFactory的addBeanPostProcessor方法
接口名稱分別爲.net的Spring.Objects.Factory.Config.IObjectPostProcessor 與Java的org.springframework.beans.factory.config.BeanPostProcessorc#
- postProcessBeforeInitialization每一個對象的初始化方法被調用以前執行 (不過在c#中必需要有初始化方法,,初始化方法能夠是IInitializingObject接口 的AfterPropertiesSet方法,也能夠是init-method屬性指定的任意方法)
- postProcessAfterInitialization在對象的初始化方法返回以後執行
- 第一個參數都是當前實例,第二個參數是在容器中的名稱,返回值是當前要設置的實例
第一點的第一個子接口.net的Spring.Objects.Factory.Config.IInstantiationAwareObjectPostProcessor 與Java的org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessorpost
- postProcessBeforeInstantiation若是返回值不爲null是一個對象,那麼就是返回這個對象, 其中的factory-method方法就是這個方法來實現的,返回null就不改變原來的對象
- postProcessAfterInstantiation返回false會阻止對對象的屬性設置
- postProcessPropertyValues設置當前對象的屬性,能夠對在xml配置的屬性再次編輯 返回值類型必須是第一個參數的對象類型
第一點的第二個子接口.net的Spring.Objects.Factory.Config.IDestructionAwareObjectPostProcessor 與Java的org.springframework.beans.factory.config.DestructionAwareBeanPostProcessor.net
- PostProcessBeforeDestruction爲對象銷燬的時候
執行順序爲: xml
- postProcessBeforeInstantiation
- postProcessAfterInstantiation
- postProcessPropertyValues
- postProcessBeforeInitialization(父接口)
- 調用初始化方法
- postProcessAfterInitialization(父接口)
- postProcessBeforeDestruction