InitializingBean,FactoryBean介面在spring原始碼中的使用程式碼片段
阿新 • • 發佈:2019-01-08
1.InitializingBean介面為bean提供了初始化方法的方式,它只包括afterPropertiesSet方法, 凡是繼承該介面的類,在初始化bean的時候會執行該方法. 該方法將在所有的屬性被初始化後呼叫,但是會在init前呼叫。 2.在spring-orm.jar中的SqlMapClientFactoryBean類就使用到InitializingBean介面。 org.springframework.orm.ibatis.SqlMapClientFactoryBean 類實現了FactoryBean, InitializingBean。 重寫InitializingBean 介面的afterPropertiesSet 方法 得到 com.ibatis.sqlmap.client.SqlMapClient sqlMapClient 例項物件 重寫FactoryBean的getObject()方法,返回由InitializingBean介面的afterPropertiesSet方法得到com.ibatis.sqlmap.client.SqlMapClient例項物件.
以上程式碼說明:在實際操作spring與ibatis整合過程中,經常遇到在spring配置檔案中宣告的是
org.springframework.orm.ibatis.SqlMapClientFactoryBean例項,但是在使用的時候卻能轉為SqlMapClient使用
這是因為Spring的機制的緣故。簡單的說:
如果一個bean實現了 FactoryBean介面,那麼Spring就不會把該bean本身例項化並返回,而是返回該bean的getObject()返回的物件。