Spring框架是一個為Java應用程序的開發提供了綜合、廣泛的基礎性支持的Java平臺。
Spring體系里的常用到的項目:
1.SpringFramework
2.SpringData
3.SpringSecurity
4.SpringBoot
5.SpringCloud
Spring實現了工廠模式的工廠類,這個類名為BeanFactory(接口),在程序中通常用他的子接口ApplicationContext。
BeanFactory是Spring容器的根接口,ApplicationContext是它的子接口,通常用它的子接口ApplicationContext來訪問Spring容器。
ApplicationContext子接口常用的有四個實現類:
1.ClassPathXmlApplicationContext 從 classpath 加載 spring 的配置文件
2.FileSystemApplicationContext 從系統文件加載 spring 的配置文件
3.AnnotationConfigApplicationContext 獲取基于注解的 spring 容器對象
4.XmlWebApplicationContext 在 web 環境中獲取 spring 容器對象
Spring相當于一個大的工廠類,在其配置文件中通過元素配置用于創建實例對象的類名和實例對象的屬性。
工廠模式是一種生產對象型的設計模式,有了工廠模式后,當需要某個類的對象時,就不再需要new指定的類,而是調用工廠中的方法即可。也就不需要
關心對象的創建過程。甚至有時候也許你需要的對象只要是某種大分類的類型就可以了,而不必是某個指定的類型。不會過渡依賴某個類,這些類都是
易于被替換的,以提高整個項目的可維護性。
組成 Spring 框架的每個模塊都可以單獨存在,或者與其他一個或多個模塊聯合實現。每個模塊的功能如下:
Spring 核心容器:核心容器提供 Spring 框架的基本功能,管理著Spring應用中bean的創建、配置和管理。核心容器的主要組件是 BeanFactory,它是工廠模式的實現。BeanFactory 使用DI將應用程序的配置和依賴性規范與實際的應用程序代碼分開。
Spring 上下文:Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。提供了一種框架式的對象訪問方法,有些象JNDI注冊器。Context封裝包的特性得自于Beans封裝包,并添加了對國際化(I18N)的支持(例如資源綁定),事件傳播,資源裝載的方式和Context的透明創建,比如說通過Servlet容器。Spring 上下文和Bean工廠都是 bean 容器 的實現。
Spring AOP:通過配置管理特性,Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何對象支持 AOP。Spring AOP 模塊為基于 Spring 的應用程序中的對象提供了事務管理服務。
Spring DAO:JDBC DAO 抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不同數據庫供應商拋出的錯誤消息。異常層次結構簡化了錯誤處理,并且極大地降低了需要編寫的異常代碼數量(例如打開和關閉連接)。Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結構。
Spring ORM:Spring 框架插入了若干個 ORM 框架,從而提供了 ORM 的對象關系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有這些都遵從 Spring 的通用事務和 DAO 異常層次結構。
Spring Web 模塊:Web 上下文模塊建立在應用程序上下文模塊之上,為基于 Web 的應用程序提供了上下文。
Spring MVC 框架:MVC 框架是一個全功能的構建 Web 應用程序的 MVC 實現。通過策略接口,MVC 框架變成為高度可配置的,MVC 容納了大量視圖技術,其中包括 JSP、Velocity、Tiles、iText 和 POI。
spring有兩個核心思想 (IOC (控制反轉) , AOP(面向切面編程))
IOC (控制反轉) : 控制反轉就是一種思想 , 這個思想是怎么想的呢 , 就是將對象控制權的轉移,從程序代碼本身反轉到了外部容器 。就是想把實體類 的生命周期交給spring去控制 , 讓spring實現創建 ,實現初始化 , 實現銷毀 . 這樣就可以大大的免去在編寫代碼的過程中new一個對象 , 眾所周知new 對象 是java代碼編寫里耦合性最大的一個事情 。
有反轉就會有正轉,正轉就是應用程序用到了什么對象會直接在應用程序中進行創建,自己手動new出來。
也說了IOC是一種思想 ,那么怎么把這種思想實現呢 ,如今比較流行的的方法是依賴注入 DI(Dependency Injection)
DI(依賴注入):是指程序運行過程中,若需要調用另一個對象協助時,無須在代碼中創建被調用者,而是依賴于外部容器,由外部容器創建后傳遞給程序。依賴注入是目前最優秀的解耦方式。依賴注入讓Spring的Bean之間以配置文件的方式組織在一起,而不是以硬編碼的方式耦合在一起的。
兩者的關系就是ioc是一種思想 ,而DI確實一種實現方式 ,這里介紹了IOC,那么下面再來說下spring的另外一個核心思想AOP
AOP(面向切面編程) : 面向切面編程是對OOP(面向對象編程)的完善和補充 。
面向切面是面向對象中的一種方式而已。在代碼執行過程中,動態嵌入其他代碼,叫做面向切面編程。
AOP采用一種稱為“橫切”的技術,將涉及多業務流程的通用功能抽取并單獨封裝,形成獨立的切面,在合適的時機將這些切面橫向切入到業務流程指定的位置中。
常見的使用場景有日志 ,事物管理以及數據庫操作
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。