public class lifeCycle : Spring.Objects.Factory.IInitializingObject, System.IDisposable, Spring.Objects.Factory.IObjectFactoryAware, Spring.Objects.Factory.IObjectNameAware { public Spring.Objects.Factory.IObjectFactory OFactory { get; set; } public String Name { get; set; } public void initMethod(){} public void destroyMethod() {} public void AfterPropertiesSet(){ initMethod(); } public void Dispose(){ destroyMethod(); } public Spring.Objects.Factory.IObjectFactory ObjectFactory{ set { OFactory = value; } } public string ObjectName{ set { Name = value; } } } public class CustomFactory : Spring.Objects.Factory.IFactoryObject { public object GetObject(){ return "1"; } public bool IsSingleton{ get { return false; } } public Type ObjectType{ get { return typeof(string); } } }<object id="lifeCycle" type="SpringBase.lifeCycle, SpringBase" init-method="initMethod" destroy-method="destroyMethod" /> <object id="customFac" type="SpringBase.CustomFactory, SpringBase"/>
package springdemo; import org.springframework.beans.BeansException; import org.springframework.beans.factory.*; public class LifeCycle implements InitializingBean, DisposableBean, BeanFactoryAware, BeanNameAware { private BeanFactory oFactory; private String name; public void initMethod(){} public void destroyMethod() {} @Override public void afterPropertiesSet() throws Exception { initMethod(); } @Override public void destroy() throws Exception { destroyMethod(); } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { oFactory=beanFactory; } @Override public void setBeanName(String name) { this.name=name; } public String getName() { return name; } public BeanFactory getoFactory() { return oFactory; } } class CustomFactory implements FactoryBean<String>{ @Override public String getObject() throws Exception { return "1"; } @Override public Class<?> getObjectType() { return String.class; } @Override public boolean isSingleton() { return false; } }<bean id="lifeCycle" class="springdemo.LifeCycle" init-method="initMethod" destroy-method="destroyMethod" /> <bean id="customFac" class="springdemo.CustomFactory" />
java和Csharp的共同點 html
- IObjectFactoryAware|BeanFactoryAware以及IObjectNameAware|BeanNameAware 實現的接口的屬性或者方法會在容器初始化完成後spring自動調用賦值,只要更改方法體便可
- IInitializingObject|InitializingBean接口的AfterPropertiesSet方法 在屬性賦值完成後調用,也能夠用init-method節點來和spring框架解耦
- IDisposable|DisposableBean接口的destroy方法在對象釋放的時候調用, 也能夠用destroy-method節點來和spring框架解耦
- IFactoryObject|FactoryBean
爲建立一個工廠類, 經過id調用Ioc容器的時候返回的是getObject方法的返回值不是工廠類, 前一章節的獲取對象的屬性就是繼承了這個接口,isSingleton返回這個對象是否是單例, ObjectType|getObjectType返回對象類型 - IObjectFactoryAware|BeanFactoryAware獲取當前Ioc的容器
- IObjectNameAware|BeanNameAware獲取對象在容器裏面的名稱