Spring基礎學習筆記(八)
阿新 • • 發佈:2019-01-08
4種例項化Bean的方式
第一種:需要公共無參構造方法,常用
自己寫的物件:Dao,Service,Action都使用這種方法
第二種:FactoryBean(一般都不自己寫FactoryBean例項,而是使用spring已經寫好的)
新增hibernate需要的jar檔案
例項化不能通過預設無參構造方法獲取的bean
通過FactoryBean的子類獲取SessionFactory 的例項(新增hibernate的jar檔案)
如:
Configuration configuration = new Configuration(); configuration.configure(); SessionFactory sessionFactory = configuration.buildSessionFactory();
FactoryBean介面
public interface FactoryBean<T> {
//獲取物件的例項
T getObject() throws Exception;
//獲取物件例項的Class型別
Class<?> getObjectType();
//是否單例
boolean isSingleton();
}
MySessionFactoryBean
面試題:BeanFactory和FactoryBean的區別
BeanFactory介面,頂層父工廠,容器,獲取bean的例項
FactoryBean 介面,例項化不能通過預設無參構造方法獲取的bean,通過實現類的getObject方法來返回例項,如SessionFactory
org.springframework.orm.hibernate3.LocalSessionFactoryBean
整合hibernate3.x
Org.springframework.orm.hibernate4.LocalSessionFactoryBean
整合hibernate4.x
Junit
第三種:整合靜態簡單工廠(一般不用,以後學習activity要用哦)
靜態簡單工廠(靜態方法)
spring整合靜態簡單工廠
因為spring本身就是大的工廠
第四種:整合例項簡單工廠(一般不用)
例項簡單工廠(例項方法)
spring整合例項簡單工廠
控制反轉IOC小結
public class UserServiceImpl{
private IUserDao dao =new UserDaoJdbcImpl();
}
dao物件是在應用內部建立及維護的。
所謂控制反轉就是應用本身不負責依賴物件的建立及維護,依賴物件的建立及維護是由外部容器負責的。這樣控制權就由應用轉移到了外部容器,控制權的轉移就是所謂反轉,目的是為了獲得更好的擴充套件性和良好的可維護性。
當我們把依賴物件交給外部容器負責建立,那麼UserServiceImpl類可以改成如下:
public class UserServiceImpl {
private IUserDao dao;
set方法:依賴注入
}
依賴注入DI小結
所謂依賴注入就是指:在執行期(例項好了spring容器ApplicationContext),由外部容器動態地將依賴物件注入到元件中。
三種依賴注入方式
Type1 介面注入(已經out了)
Type2 設值方法注入(setter)
Type3 構造子注入