Spring系列(一):Spring相關知識介紹筆記

? ? ? ? ? ? ? ?c30ec1c709a003de4d51c92544d332fd.png? ?

目錄

1、Srping概念

2、Spring原理

2.1 控制反轉(Inversion of control)(IOC)

2.2 面向切面編程(Aspect-Oriented Programming)(AOP)

3、Spring框架結構

4、Srping生命周期

4、Srping有什么優勢?

4.1、非侵入式設計

4.2、 方便解耦、簡化開發

4.3、支持AOP

4.4、支持聲明式事務處理

4.5、便于系統測試

4.6、便于集成各種優秀框架

4.7、大大降低Java EE API的使用難度


? ??

1、Srping概念

Spring屬于開源框架,Spring是于2003年流行起來的一個輕量級的Java開發基礎框架,它是為了解決企業應用開發的復雜性而提供的解決方案。該框架的主要優勢之一就是其實現分層架構,分層架構允許使用者自由選擇使用哪些組件,Spring同時為J2EE應用程序開發提供集成的框架。Spring使用基本的JavaBean來完成以前只能由EJB完成的事情。Spring具有簡單性、可測試性和松耦合的特點。Spring的核心技術是控制反轉(IoC)和面向切面(AOP)。

2、Spring原理

2.1 控制反轉(Inversion of control)(IOC)

利用java的反射特性讓一個對象的創建可以不用new進行實例化,可以自動的生產,這其實就是利用java的反射特性,反射其實就是在運行時動態的去創建、調用對象,Spring就是在運行時,跟xml Spring的配置文件來動態的創建對象和調用對象里的方法。就是將對象,以及對象之間的引用關系,交給Spring容器統一管理。

2.2 面向切面編程(Aspect-Oriented Programming)(AOP)

AOP以OOP面向對象編程為前提和基礎,主要用于將共通邏輯(日志記錄,性能統計,事務處理,異常處理等)從普通的代碼邏輯中分離出來,從而降低業務邏輯各部分的耦合度。

3、Spring框架結構

Spring框架主要有以下7個模塊構成:

  • Spring AOP:面向切面編程思想,也提供了事務管理能力。

  • Spring ORM:提供了對Hibernate、myBatis等ORM框架的支持。

  • Spring DAO:提供了 對Data Access Object模式和JDBC的支持。實現業務邏輯與數據庫訪問代碼分離,從而降低代碼耦合度。

  • Spring Web:提供了Servlet監聽器的Context和Web應用的上下文。

  • Spring Context:提供了Spring上下文環境。

  • Spring MVC:提供了MVC設計模式的實現。

  • Spring core:提供了Spring框架基本功能(IOC功能),如BeanFactory以工廠模式創建所需對象、通過讀取xml文件實例化對象、管理組件生命周期等等。

? ? ? ?e089dd86eaef5eab93630c918c6561d2.png ? ? ? ?

4、Srping生命周期

? ? ? ?1b32bd07fd3d6ac16260890fe215fb5c.png ? ? ? ?

1、實例化Bean也就是我們經常使用的new方法;

2、按照Spring上下文對實例化的Bean進行配置(IOC注入);

3、Bean實現BeanNameAware接口,會調用它實現的setBeanName(String)方法,傳遞的就是Spring配置文件中Bean的id值

4、Bean已經實現BeanFactoryAware接口,會調用它實現的setBeanFactory(setBeanFactory(BeanFactory)傳遞的是Spring工廠自身(可以用這個方式來獲取其它Bean,只需在Spring配置文件中配置一個普通的Bean就可以);

5、Bean已經實現ApplicationContextAware接口,會調用setApplicationContext(ApplicationContext)方法,傳入Spring上下文;

6、Bean關聯了BeanPostProcessor接口,將會調用postProcessBeforeInitialization(Object obj, String s)方法,BeanPostProcessor經常被作為對Bean內容的更改,并且由于這個是在Bean初始化結束時調用那個的方法,也可以被應用于內存或緩存技術;

7、Bean在Spring配置文件中配置了init-method屬性會自動調用其配置的初始化方法。

8、Bean關聯了BeanPostProcessor接口,會調用postProcessAfterInitialization(Object obj, String s)方法;

說明:以上工作完成以后就可以應用這個Bean了,那這個Bean屬于Singleton的,所以一般情況下我們調用同一個id的Bean會是在內容地址相同的實例,當然在Spring配置文件中也可以配置非Singleton。

9、當Bean不再需要時,會經過清理階段,如果Bean實現了DisposableBean這個接口,會調用那個其實現的destroy()方法;

10、最后,如果這個Bean的Spring配置中配置了destroy-method屬性,會自動調用其配置的銷毀方法。

4、Srping有什么優勢?

4.1、非侵入式設計

Spring屬于非侵入式(non-invasive)框架,它使應用程序代碼對框架的依賴程度最小。

4.2、 方便解耦、簡化開發

Spring就是一個大工廠,可以將所有對象的創建和依賴關系的維護工作都交給Spring容器統一管理,大大降低了組件之間的耦合性。

4.3、支持AOP

Spring框架提供了對AOP的支持,它允許將一些通用任務,如安全、事務、日志等進行統一處理,從而大大減少了代碼量、提高了代碼的復用率。

4.4、支持聲明式事務處理

只需要通過配置就可以完成對事務的管理,而無需手動編程實現事務的邏輯。

4.5、便于系統測試

Spring提供了對Junit4的支持,可以通過注解方便的進行系統測試。

4.6、便于集成各種優秀框架

Spring不排斥各種優秀的開源框架,其內部提供了對各種優秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持。

4.7、大大降低Java EE API的使用難度

Spring對Java EE開發中非常不友好的一些API(JDBC、JavaMail等),都提供了很好封裝,使這些API應用難度會大大降低。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270402.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270402.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270402.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SDUT 3400 數據結構實驗之排序三:bucket sort

數據結構實驗之排序三:bucket sort Time Limit: 150MS Memory Limit: 65536KBSubmit StatisticProblem Description 根據人口普查結果,知道目前淄博市大約500萬人口,你的任務是幫助人口普查辦公室按年齡遞增的順序輸出每個年齡有多少人&#…

nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException(Spring循環依賴問題)

1:問題 最近啟動項目時候,遇到如下報錯 nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name stockReceiptManager: Bean with name stockReceiptManager has been injected the bean. Thi…

linux分區設置大小,Linux調整磁盤分區大小

Resize the disk (Linux調整磁盤分區大小)Resize the partition. Run parted: $ partedShow the partition list: (parted) printThere should be two partitions; 1 should be a boot partition, about 64MB; the second should be the main partition, about 3.6GSome Disk C…

電腦技巧:盤點常用的Win組合快捷鍵

今天給大家繼續分享電腦使用技巧,給大家介紹一下有哪些常用Win組合快捷鍵,希望可以對大家的日常辦公提高幫助! 1、WinE:打開我的電腦 超級實用的一個組合鍵,不論你當前在操作什么,只要按下這個組合鍵&#…

簡單正則替換

var reganew RegExp(" ","g"); //創建正則RegExp對象 ntrstrntrstr.replace(rega,""); var regbnew RegExp(" ","g"); //創建正則RegExp對象 ntrstrntrstr.replace(regb,""); var regcnew Reg…

電腦技巧:電腦安裝操作系統、重裝系統常見的問題解決方法

目錄 1、提示權限不足 2、添加PE開機引導菜單失敗 3、磁盤格式錯誤 4、除系統盤外,未找到任何其他非系統磁盤分區 5、計算機意外地重新啟動或遇到錯誤 6、windows無法完成安裝 7、U盤安裝系統時出現如下圖錯誤 8、下載速度慢、卡住 重裝系統現在也不是什么難事&…

linux開發板上程序如何調試,linux開發板調試典型方法

tftpdsudo apt-get install tftpd openbsd-inetd將/etc/inetd.conf中的最后一個路徑設置成你希望讓客戶端存取文件的目錄例如下面的“/tftpboot”(記得開放該目錄的讀寫權限):“tftp dgram udp wait nobody /usr/sbin/t…

電腦技巧:Win10電腦卡頓解決小技巧,非常實用

目錄 1、及時關閉不常用的后臺進程 2、建議打開GPU硬件加速功能 3、及時更新升級硬件驅動 4、適當降低Windows動畫特效 5、開啟Windows自帶的游戲模式 電腦用的時間越久就會越卡頓了,今天小編給大家分享五個小技巧,來解決電腦卡頓的問題,有需…

線程其實就是一個個指令組成的,當這個線程內的指令全部執行完了,那么這個線程也就執行結束了

線程其實就是一個個指令組成的,當這個線程內的指令全部執行完了,那么這個線程也就執行結束了

page,client,offset區別

offset:相對于當前“盒子”的距離 &#xff0c;與滾動條無關 client:相對于可視區域的距離&#xff0c;與滾動條無關 page:相對于整個頁面的距離&#xff0c;與滾動條有關 示例代碼&#xff1a; 1 <!DOCTYPE html>2 <html lang"en">3 <head>4 …

linux netbeans 中文亂碼,淺談Linux Netbeans字體反鋸齒處理

用的Linux發行版是Ubuntu8.04&#xff0c;如果使用源里面的JDK一切都很簡單(現在源里的版本是1.6u6)&#xff0c;JDK6開始支持反鋸齒。裝完Netbeans你就會驚喜的發現&#xff0c;仿原生GUI的界面(GTK&#xff0b;)上的文字是反鋸齒的&#xff0c;但是編輯器里面的文字是鋸齒的&…

Win10軟件:推薦兩款Windows操作系統下的遠程軟件,值得收藏!

遠程控制軟件是程序員日常必備的工具&#xff0c;現場市面上有微軟自帶的遠程連接工具、向日葵、teamviewer等遠程控制軟件。他們都有一個共同的缺點&#xff0c;無法針對遠程連接設置分組、別名。大多數情況下&#xff0c;我們可能需要連接十幾個甚至幾十個Windows遠程服務器。…

開發機多用戶 xdebug 遠程調試 PhpStorm

在公司都用的遠程開發機開發&#xff0c;每次有錯誤調試就得dd(xxx)然后保存真是&#xff0c;讓我在本地開發用慣xdebug的情何以堪&#xff0c;所以有了下文。 1.安裝配置xdebug 直接使用pecl安裝即可# pecl install xdebug 然后寫xdebug配置&#xff0c;下面是我的設置(具體擴…

linux查看 idt日志,實現RCP的日志管理

做插件開發的都知道當應用跑不起來了就去看看workspace里的.log文件&#xff0c;錯誤信息很詳細,那樣解決問題就方便多了&#xff0c;這個功能很好&#xff0c;所以學習了下&#xff0c;和大家分享下&#xff0c;實現的原理也就一行代碼Java代碼 Platform.getLog(Platform.getB…

電腦技巧:電腦內存不足解決小技巧

熟悉電腦硬件的朋友們都知道&#xff0c;內存相對于電腦來說是一個相當重要的部件&#xff0c;內存屬于CPU的“工作室”&#xff0c;因為電腦所有運行的程序都是在內存中運行&#xff0c;它決定了多少、多大的程序能即時運行&#xff0c;如若執行的應用程序過大或者過多就會導致…

前端:分享一些實用的JS代碼片段

今天給大家分享一些實用的JS代碼片段&#xff0c;有需要的朋友歡迎收藏&#xff01;1、獲取瀏覽器的版本function getBrowser() {var UserAgent navigator.userAgent.toLowerCase();var browserInfo {};var browserArray {IE: window.ActiveXObject || "ActiveXObject&…

20145206 《信息安全系統設計基礎》第十二周學習總結

20145206 《信息安全系統設計基礎》第十二周學習總結 本周學習目標 1、第九周代碼檢查 2、第十周代碼檢查 3、第十一周代碼檢查 博客鏈接 20145206 《信息安全系統設計基礎》第九周學習總結20145206 《信息安全系統設計基礎》第十周學習總結20145206 《信息安全系統設計基礎》第…

linux數據同步技術比較,linux下實現web數據同步的四種方式(性能比較)教程.docx

linux下實現web數據同步的四種方式(性能比較)教程實現web數據同步的四種方式1、nfs實現web數據共享2、rsync inotify實現web數據同步3、rsyncsersync更快更節約資源實現web數據同步4、unisoninotify實現web數據雙向同步一、nfs實現web數據共享?nfs能實現數據同步是通過NAS(網絡…

lambda創建線程

Testpublic void add() {//方式一Thread thread1 new Thread("ttt") {Overridepublic void run() {System.out.println("1");}};thread1.start();//方式二Runnable runnable new Runnable() {Overridepublic void run() {System.out.println("2&quo…