Spring 的核心是個輕量級(Lightweight)容器(Container),實現了IoC(Inversion of Control)模式的容器,基於此核心容器所建立的應用程式,可以達到程式元件的鬆散耦合(Loose coupling),讓程式元件可以進行測試(Testability),這些特性都使得整個應用程式可以在架構上與維護上都能得到相當程度的簡化。
- 輕量級(Lightweight)
Spring 的核心在檔案容量上只有不到 1MB 的大小,而使用 Spring 核心所需要的資源也是很小的,而 Spring 是個非侵入性(Nonintrusive)框架,它的目的之一,是讓應用程式不感受到框架的存在,減低應用程式從框架移植時的負擔。
- 容器(Container)
- IoC(Inversion of Control)
Spring 的核心概念是IoC,更具體而易懂的名詞是依賴注入(Dependency Injection),使用 Spring,您不必自己在程式碼中維護物件的依賴關係,只需在組態檔中加以設定,Spring 核心容器會自動根據組態將依賴注入指定的物件。
除了這些特性之外,Spring 的目標是實現一個全方位的整合框架,在 Spring 框架下實現多個子框架的組合,這些子框架之間彼此可以獨立,也可以使用其它的框架方案加以替代,Spring 希望提供 one-stop shop 的框架整合方案。
- AOP 框架
Spring 最為人重視的另一方面是支援AOP(Aspect-oriented programming),然而 AOP 框架只是
Spring 支援的一個子框架,說 Spring 框架是 AOP 框架並不是一件適當的描述,人們對於新奇的 AOP 關注映射至 Spring
上,使得人們對於 Spring 的關注集中在它的 AOP 框架上,雖然有所誤解,但也突顯了 Spring 的另一個令人關注的特色。
- 持久層
Spring 提供對持久層的整合,如 JDBC、O/R Mapping工具(Hibernate、iBATIS)、事務處理等。
- Web 框架
Spring 也提供 Web 框架的解決方案,但您也可以將自己所熟悉的
Web 框架與 Spring 整合,像是 Struts、Webwork 等,都可以與 Spring 整合而成為適用於自己的解決方案。
對於一些服務,例如 JNDI、Mail、排程、遠程等,Spring 不直接提供實作,而是採取抽象層方式進行包裝,讓這些服務在使用時可以有一致的使用模式且更為方便。