1. 程式人生 > >Spring框架基礎

Spring框架基礎

Spring是什麼

一個輕量級的企業應用開發框架

非侵入式的框架 應用對框架的依賴很小,很多時候應用程式碼都可以使用POJO風格

POJO:沒有從任何類繼承、也沒有實現任何介面,更沒有被其它框架侵入的java物件。

優點 :低耦合(類與類之間的聯絡) 高度可配置 易測試 開發簡單。

侵入式與非侵入式的區別:

侵入式:

比如說Struts框架,我們在使用該框架的時候必須要繼承其框架的一些類,這時框架就與我們的原始碼結合,也就是侵入了我們的程式碼。

優缺點:

開發中可以更好的與框架結合,更充分的利用框架的功能,但是複用性差,如果我們去掉框架,源程式將不能執行,我們需要進行改動程式的時候需要從原始碼中更改,這是非常麻煩的。

非侵入式:

如Spring框架,我們在使用Spring框架時無需在程式碼中繼承框架的類,通常只需要配置XML的Sping完成依賴注入就可以使用了,這時框架就沒有侵入到我們的原始碼中,這就是非侵入式。

優缺點:

非侵入式的程式碼沒有對框架產生過多的依賴,我們在需要修改功能時只需要修改XML配置檔案就可以了,如果我們不需要框架了,直接更改XML以及一小部分原始碼的一些配置就可以,並不會影響源程式的執行,可以很方便的遷移到其他地方。但是與使用者程式碼互動的方式可能就比較複雜。 

Spring結構框圖:

Spring模組

Spring核心模組(Spring Core) :

Spring的核心容器模組,它提供IOC的支援。該模組中包含BeanFactory,它採用工廠模式來實現IOC,負責對bean的生命週期的管理。

Application Context(上下文模組) :

該模組擴充套件了BeanFactory的功能,例如提供了i18n,系統生命週期以及驗證的支援

Spring的AOP模組:

該模組為應用系統的AOP開發提供了支援。

JDBC和DAO模組:

提供了JDBC封裝的模板程式碼,使得使用JDBC開發更加簡潔。

ORM對映模組:

該模組提供了對許多流行的ORM框架的支援,其中包括Hibernate,JDO和iBATIS SQL的支援

Spring Web模組:

該模組中Spring提供了對其它的WEB框架的支援,包知Struts,JSF,WEBWORK等

Spring MVC框架:

Spring提供的用於開發WEB應用的MVC框架

Spring核心應用

IOC(控制反轉)

程式中各個元件之間的關係,不由程式程式碼直接操控,而由容器控制。控制權由應用程式碼中轉到了外部容器,即所謂的反轉。

更通俗的名稱:DI(依賴注入)

各個元件之間的依賴關係不是在程式中寫死,而是寫在外部的配置檔案中,然後執行時通過容器動態注入。

Spring核心容器提供了IOC的具體實現,所有的其它模組都是建立在它的基礎之上。

什麼是IOC(DI): 把自己new的東西改為由容器提供

有什麼好處: 靈活裝配

//未使用IOC示例程式碼
private UserDao userDao = null;
public UserDao getUserDao(){
	//未使用IOC,程式碼新建Dao的例項
	userDao = new UserDao();
	return userDao;
}
public void saveUser(User user){
	//獲取Dao,呼叫Dao的方法儲存使用者
	getUserDao().save(user);
}
//使用IOC示例程式碼
private UserDao userDao = null;
 //容器自動呼叫該方法注入當前物件依賴的UserDao
public void setUserDao(UserDao userDao){
	this.userDao = userDao ;
}
public void saveUser(User user){
	//獲取Dao,呼叫Dao的方法儲存
	 userDao.save(user);
}