1. 程式人生 > >Spring基礎學習筆記(八)

Spring基礎學習筆記(八)

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 構造子注入