Spring的所有模塊都是建立在核心容器之上的。容器規(guī)定如何創(chuàng)建和配置Bean,以及很多Spring的具體細(xì)節(jié)。
核心容器:Spring核心容器為Spring框架提供了基礎(chǔ)功能。在這個(gè)模塊中你會找到BeanFactory,它是所有基于Spring框架系統(tǒng)的核心。BeanFactory采用工廠模式來實(shí)現(xiàn)IOC,它將系統(tǒng)的配置和依賴關(guān)系從代碼中獨(dú)立出來。
Application Context模塊
上下文模塊是使Spring成為框架的原因。這個(gè)模塊擴(kuò)展了BeanFactory.這個(gè)模塊提供了很多企業(yè)級服務(wù)如電子郵件服務(wù)、JNDI訪問、EJB繼承、遠(yuǎn)程調(diào)用以及定時(shí)服務(wù),并且支持與模板框架的集成。
Spring的AOP模塊
在AOP模塊中,Spring對面向切面提供了豐富的支持。這個(gè)模塊是為Spring應(yīng)用系統(tǒng)開發(fā)切面的基礎(chǔ)。
JDBC抽象及DAO模塊
Spring的JDBC和DAO模塊把這些樣板式的代碼抽象出來,讓你的數(shù)據(jù)庫代碼變得簡單明了。
O/R映射集成模塊
Spring不想實(shí)現(xiàn)自己的ORM解決方案,但是它為許多流行的ORM框架做了鉤子程序,包括Hibernate、JDO和iBatis映射,Spring的事務(wù)管理支持所有這些ORM框架以及JDBC.
Spring的web模塊
web上下文模塊建立在應(yīng)用上下文模塊的基礎(chǔ)之上,提供了適合web系統(tǒng)的上下文。
Spring MVC框架
Spring為web系統(tǒng)提供了全功能的MVC框架。
應(yīng)用:
使用<property>元素表示設(shè)置屬性值。使用<constructor-arg>元素表示通過構(gòu)造方法設(shè)置參數(shù)
public class HelloApp{
public static void main(String[] args)throws Exception{
BeanFactory factory = new XmlBeanFactory(new FileInputStream("hello.xml"));
GreetingService greetingService = (GreetingService)factory.getBean("greetingSercice");
greetingService.sayGreeting();
}
}
這里的BeanFactory就是Spring容器。將hello.xml文件載入容器后,main()方法調(diào)用BeanFactory的getBean()方法來得到問候服務(wù)的引用。
反向控制:控制的什么方面被反轉(zhuǎn)了,獲得依賴對象的方式反轉(zhuǎn)了。
依賴注入:任何重要的系統(tǒng)都需要至少2個(gè)相互合作的類來完成業(yè)務(wù)邏輯,通常,每個(gè)對象都要自己負(fù)責(zé)得到它的合作(依賴)對象。你會發(fā)現(xiàn),這樣會導(dǎo)致代碼耦合度高而且難以測試。
使用IOC,對象的依賴都是在對象創(chuàng)建時(shí)由負(fù)責(zé)協(xié)調(diào)系統(tǒng)中各個(gè)對象的外部實(shí)體提供的。
耦合是一個(gè)雙頭怪物,一方面,緊密耦合的代碼難以測試,難以重用,難以理解,帶來典型的摧毀大堤bug.另一方面,完全沒有耦合的代碼什么也做不了。為了做一些有意義的工作,類必須以某種方式知道其他類的存在。耦合是必須的,但需要小心管理。
減少耦合的一個(gè)通常的做法就是將具體實(shí)現(xiàn)隱藏在接口下面,這樣具體實(shí)現(xiàn)類的替換不會影響到引用類。
posted on 2009-10-12 21:53
王永慶 閱讀(249)
評論(0) 編輯 收藏 所屬分類:
SPRING