程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 深入探索spring技術內幕(一): spring概述

深入探索spring技術內幕(一): spring概述

編輯:C++入門知識

一、Spring是什麼?

Spring是一個開源的控制反轉 ( IoC ) 和面向切面 ( AOP ) 的容器框架, 它的主要目的是簡化企業開發.


二、控制反轉(IoC)

控制反轉: 所謂的控制反轉就是應用本身不負責依賴對象的創建及維護, 依賴對象的創建及維護是由外部容器負責的.

這樣控制權就由應用轉移到了外部容器, 控制權的轉移就是所謂的反轉.

public class PersonServiceBean {
	// 自己new一個對象
	private PersonDao personDao = new PersonDaoBean();
	public void save(Person person) {
		personDao.save(person);
	}
}

public class PersonServiceBean {
	// 由spring通過set方法注入對象
	private PersonDao personDao;
	public void save(Person person) {
		personDao.save(person);
	}
	public void setPersonDao(PersonDao personDao) {
		this.personDao = personDao;
	}
}

三、依賴注入(DI)

依賴注入: 所謂的依賴注入就是在運行期, 由外部容器動態地將依賴對象注入到組件中.

為了能更好的理解依賴注入, 我們不妨問自己兩個問題:

1. 誰依賴誰? 為什麼需要依賴?

當然是應用程序依賴於IoC容器, 應用程序需要IoC容器來提供對象需要的外部資源.

2. 誰注入誰? 注入了什麼?

當然是IoC容器注入應用程序某個對象, 注入對象所需要的外部資源(對象, 資源, 常量數據).


其實IoC和DI是統一個概念的不同角度描述, 相對IoC而言, '依賴注入' 明確描述了被注入對象依賴IoC容器配置依賴對象.


四、為何要用Spring

在項目中引入spring可以給我們帶來以下好處:

1. 降低組件之間的耦合度, 實現軟件各層之間的解耦.

2. 可以使用容器提供的眾多服務, 如: 事務管理服務, 消息服務等. 當我們使用容器管理事務時, 開發人員就不再需要手動控制事務,

也不需要處理復雜的事務傳播.

3. 容器提供單例模式支持, 開發人員不再需要自己編寫實現代碼.

4. 容器提供AOP技術, 利用它很容易實現如權限控制等功能.

5. 容器提供眾多輔助類如: JdbcTemplate、HibernateTemplate等, 使用這些類能夠加快應用的開發.

6. spring為主流的應用框架提供了集成支持, 如集成Hibernate、JPA、Struts等, 方便我們的開發.



五、輕量級與重量級

spring屬於輕量級框架還是重量級框架?

劃分一個應用屬於輕量級還是重量級, 主要看他使用了多少服務. 使用的服務越多, 容器就要為普通java對象做的工作越多,

必然會影響到應用的發布時間及運行性能.

對於spring容器, 它提供了很多服務, 但這些服務並不是默認為應用打開的, 應用需要某種服務, 還需要指明使用該服務, 如果應用使用的服務很少,

如: 只使用spring核心服務, 那麼我們可以認為此時應用屬於輕量級的, 如果應用使用了spring提供的大部分服務,這時應用就屬於重量級的.

目前EJB容器就因為它默認為應用提供了EJB規范中所有的功能, 所以它屬於重量級.



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved