Spring來源-核心簡介

來源-核心簡介:

歷史:

在傳統應用程序開發中,一個完整的應用是由一組相互協作的對象組成。所以開發一個應用除了要開發業務邏輯之外,最多的是關注如何使這些對象協作來完成所需功能,而且要低耦合、高聚合。

如今:

早在 2007 年,一個基於 Java 語言的開源框架正式發佈,取了一個非常有活力且美好的名字,叫做 Spring。它是一個開源的輕量級Java SE(Java 標準版本)/Java EE(Java 企業版本)開發應用框架,其目的是用於簡化企業級應用程序開發。應用程序是由一組相互協作的對象組成。業務邏輯開發是不可避免的,那如果有個框架出來幫我們來創建對象及管理這些對象之間的依賴關係。

Spring帶來的好處:

1,Spring 框架除了幫我們管理對象及其依賴關係

2,還提供像通用日誌記錄、性能統計、安全控制、異常處理等面向切面的能力

3,還能幫我管理最頭疼的數據庫事務,本身提供了一套簡單的 JDBC 訪問實現,提供與第三方數據訪問框架集成(如 Hibernate、JPA)

4,與各種 Java EE 技術整合(如 Java Mail、任務調度等等),提供一套自己的 Web 層框架 Spring MVC、而且還能非常簡單的與第三方 Web 框架集成。

從這裏我們可以認爲 Spring 是一個超級粘合大平臺,除了自己提供功能外,還提供粘合其他技術和框架的能力,從而使我們可以更自由的選擇到底使用什麼技術進行開發。而且不管是 JAVA SE(C/S 架構) 應用程序還是 JAVA EE(B/S 架構)應用程序都可以使用這個平臺進行開發。如今的 Spring 已經不再是一個框架,早已成爲了一種生態。

SpringBoot 的便捷式開發實現了零配置,SpringCloud 全家桶, 提供了非常方便的解決方案。

 

Spring設計理念

Spring的最根本使命是簡化開發,對此採取了四個關鍵策略:

1、基於 POJO 的輕量級和最小侵入性編程;

2、通過依賴注入和麪向接口松耦合;

3、基於切面和慣性進行聲明式編程;

4、通過切面和模板減少樣板式代碼;

而他主要是通過:面向 Bean(BOP)、依賴注入(DI)以及面向切面(AOP)這三種方式來達成的。

BOP 編程伊始

Spring 是面向 Bean 的編程(Bean Oriented Programming, BOP),Bean 在 Spring 中才是真正的主角。Bean 在 Spring 中作用就像 Object 對 OOP 的意義一樣,Spring 中沒有 Bean 也就沒有 Spring 存在的意義。Spring 提供了 IOC 容器通過配置文件或者註解的方式來管理對象之間的依賴關係。

控制反轉(其中最常見的實現方式叫做依賴注入(Dependency Injection,DI),還有一種方式叫“依賴查找”(Dependency Lookup,DL),她在 C++、Java、PHP 以及.NET 中都運用。在最早的Spring 中是包含有依賴注入方法和依賴查詢的,但因爲依賴查詢使用頻率過低,不久就被 Spring 移除了,所以在 Spring 中控制反轉也被直接稱作依賴注入),她的基本概念是:不創建對象,但是描述創建它們的方式。在代碼中不直接與對象和服務連接,但在配置文件中描述哪一個組件需要哪一項服務。容器 (在 Spring 框架中是 IOC 容器)負責將這些聯繫在一起。

依賴注入的基本概念

Spring 設計的核心 org.springframework.beans 包(架構核心是 org.springframework.core 包),它的設計目標是與 JavaBean 組件一起使用。這個包通常不是由用戶直接使用,而是由服務器將其用作其他多數功能的底層中介。下一個最高級抽象是 BeanFactory 接口,它是工廠設計模式的實現, 允許通過名稱創建和檢索對象。BeanFactory 也可以管理對象之間的關係。

BeanFactory 最底層支持兩個對象模型。

1,單例:提供了具有特定名稱的全局共享實例對象,可以在查詢時對其進行檢索。Singleton 是默認的也是最常用的對象模型。

2,原型:確保每次檢索都會創建單獨的實例對象。在每個用戶都需要自己的對象時,採用原型模式。Bean 工廠的概念是 Spring 作爲 IOC 容器的基礎。IOC 則將處理事情的責任從應用程序代碼轉移到框架。

AOP 編程理念

面向切面編程,即 AOP,是一種編程思想,它允許程序員對橫切關注點或橫切典型的職責分界線的行爲(例如日誌和事務管理)進行模塊化。AOP 的核心構造是方面(切面),它將那些影響多個類的行爲封裝到可重用的模塊中。

AOP 和 IOC 是補充性的技術,它們都運用模塊化方式解決企業應用程序開發中的複雜問題。在典型的面向對象開發方式中,可能要將日誌記錄語句放在所有方法和 Java 類中才能實現日誌功能。在 AOP 方式中,可以反過來將日誌服務模塊化,並以聲明的方式將它們應用到需要日誌的組件上。當然,優勢就是 Java 類不需要知道日誌服務的存在,也不需要考慮相關的代碼。所以,用 Spring AOP 編寫的應用程序代碼是鬆散耦合的。

AOP 的功能完全集成到了 Spring 事務管理、日誌和其他各種特性的上下文中。

AOP 編程的常用場景有:Authentication(權限認證)、Auto Caching(自動緩存處理)、Error Handling

(統一錯誤處理)、Debugging(調試信息輸出)、Logging(日誌記錄)、Transactions(事務處理) 等。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章