Spring MVC Web框架

来源:http://www.cnblogs.com/happyrocky/archive/2016/04/24/spring_mvc.html
-Advertisement-
Play Games

1. Spring MVC簡介 Spring MVC是java EE平臺請求驅動類型的輕量級Web框架,使用了MVC設計模式的思想,spring框架的主要優勢之一就是分層架構,分層架構允許選擇使用任何一個組件,同時也可以集成其它框架技術,例如:Struts2、Hibernate等 Spring框架具 ...


1. Spring MVC簡介

  Spring MVC是java EE平臺請求驅動類型的輕量級Web框架,使用了MVC設計模式的思想,spring框架的主要優勢之一就是分層架構,分層架構允許選擇使用任何一個組件,同時也可以集成其它框架技術,例如:Struts2、Hibernate等

  Spring框架具有以下特點:

  1. 方便解耦,簡化開發。通過spring3提供的IoC容器,可以將對象之間的依賴關係交由Spring3控制,避免編碼所造成的程式過度耦合

  2. AOP編程的支持。通過Spring3提供的AOP功能,方便進行面向切麵編程,許多不容易使用面向對象程式設計(OOP)實現的功能可以通過AOP輕鬆實現

  3. 聲明式事務的支持。通過聲明方式靈活地進行事務管理,提高開發效率和質量

  4. 方便集成各種優秀框架。

  Spring框架各個組件的功能:

  1. 核心容器

  核心容器提供Spring3框架基本的功能。核心容器的主要組件是BeanFactory和ApplicationContext。容器使用控制反轉(IoC)模式將應用程式的配置和依賴性規範和實際的應用程式代碼分開。

  2. Spring上下文

  Spring上下文是一個配置文件,向Spring框架提供上下文信息。Spring上下文包括企業服務,例如,校驗、JNDI、EJB、電子郵件、國際化等

  3. Spring AOP

  通過配置管理特性,Spring AOP模塊直接將面向切麵的編程功能集成到Spring框架中,pring AOP模塊提供了事務管理服務。

  4. Spring DAO

   JDBC DAO抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不同資料庫供應商拋出的錯誤消息。

  5. Spring ORM

  Spring插入了若幹個ORM框架,從而提供了ORM的工具,其中包括JDO、Hibernate、iBatisSQL Map。

2. Spring IoC(控制反轉)

  IoC是Inversion of Control的縮寫,就是通過IoC容器來實現對象組件的裝配和管理。也就是說,所有組件都是被動的,所有的組件初始化和調用都由IoC容器負責。

  Spring IoC經常用到一個設計模式——工廠模式,工廠模式提供創建對象的介面。

  Spring框架兩個最基本的包是:org.springframework.beans.factory(主要介面是BeanFactory)和org.springframework.context(主要介面是ApplicationFactory)

  IoC主要組件:

  1. Beans

  Beans指項目中提供業務功能Bean,即IoC容器要管理的Bean,Bean可以包含一些屬性的getter和setter方法,也可以包含其他方法

  2. 配置文件

  Spring對Bean的管理在配置文件中進行.Bean的配置文件是一個xml文件,他通常命名為beans.xml、applicationContext.xml等,配置文件包含Bean的id、類、屬性及其值。IoC容器通過Bean的id從Bean配置文件中取得Bean的類,並生成該配置文件的一個對象。

  3. BeanFactory介面及其相關類

  BeanFactory採用了工廠設計模式,即Bean容器模式,負責讀取Bean的配置文件,管理對象的生成、載入,維護對象之間的依賴關係,負責Bean對象的生命周期。

  org.springframework.beans.factory.BeanFactory是一個頂級介面,它包含管理Bean的各種方法,例如:getBean(String name),,根據Bean的id生成Bean的對象

  4. ApplicationContext介面及其相關類

  ApplicationContext介面提供高級功能的容器,例如:提供訪問資源文件的更方便的方法,支持國際化等

  註入的兩種方式:

  1. 設置註入

  設置註入是通過setter方法註入被調用者的實例

  2.構造註入

  利用構造方法來設置依賴註入

3. Spring AOP(面向切麵編程)

  AOP為Aspect Oriented Programming的縮寫,即面向切麵編程(也叫面向方面),是一種可以通過預編譯方式和運行期動態代理實現在不修改源代碼的情況下給程式動態統一添加功能的一種技術。

  使用AOP技術,可以將一些系統性相關的編程工作,獨立提取出來,獨立實現,然後通過切麵切入進系統。從而避免了在業務邏輯的代碼中混入很多的系統相關的邏輯——比如許可權管理,事物管理,日誌記錄等等。這些系統性的編程工作都可以獨立編碼實現,然後通過AOP技術切入進系統即可。

  AOP分為靜態AOP和動態AOP。靜態AOP是指AspectJ實現的AOP,他是將切麵代碼直接編譯到Java類文件中。動態AOP是指將切麵代碼進行動態織入實現的AOP。Spring的AOP為動態AOP,實現的技術為:JDK提供的動態代理技術 和 CGLIB(動態位元組碼增強技術)。儘管實現技術不一樣,但都是基於代理模式,都是生成一個代理對象。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 什麼是Queue集合? 答:Queue用於模擬隊列這種數據結構。隊列通常是指“先進先出(FIFO)”的容器。隊列的頭部保存在隊列中存放時間最長的元素,尾部保存存放時間最短的元素。新元素插入到隊列的尾部,取出元素會返回隊列頭部的元素。通常,隊列不允許隨機訪問隊列中的元素。 Queue介面中定義瞭如下的 ...
  • “這裡要用char類型”; “這裡要用int類型”; “其實實現這個方法只需要把另一個方法的返回值的類型和傳入參數的類型改成float類型就實現了”; “其實這個演算法只需要把以前寫的那個稍微改動一下就行了”; ……………… 學過面向對象語言的都知道GP這個概念,就是泛型程式設計,說的再明白點就是編寫 ...
  • Java併發編程系列【未完】: Java 併發編程:核心理論 Java併發編程:Synchronized及其實現原理 Java併發編程:Synchronized底層優化(輕量級鎖、偏向鎖) 一、重量級鎖 上篇文章中向大家介紹了Synchronized的用法及其實現的原理。現在我們應該知道,Synch ...
  • 微信支付介面文檔:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1 首先你得知道這個jsapi是不能離開微信進行調用支付的,明白了這個道理我們好下手,頁面是在微信內顯示並通過jsapi調用微信支付組件進行支付。 可以看看我們上一 ...
  • 下載頁: http://www.rabbitmq.com/install-standalone-mac.html 1、下載頁面首部的文件(頁面下載可能比較慢,使用迅雷下載就好),之後解壓到一個合適的路徑(例如:/Users/enniu1/Desktop/zjg/)。 2、配置命令訪問路徑 cd ~ ...
  • 上一篇文末,提到非虛擬介面 NVI 的實現,即將虛函數聲明為保護型或私有型,藉由模板函數模式來實現 。 園友 @KillU 看的很仔細,提出了一個問題:虛函數是 private 類型,繼承可以麽? 答案是:完全可以 5 實現權和調用權 <Effective C++> 中給的解釋是: 重寫一個虛函數, ...
  • 圖片上傳 Index.php文件代碼: upload.php代碼: 圖片上傳步驟: 1:接收參數 2:判斷錯誤 3:判斷格式是否合法 4:判斷文件大小 5:判斷是是不是真正的圖片 6:判斷是否是http post提交 文件上傳 Index.php文件代碼: <!DOCTYPE html> <html ...
  • AWT事件處理基本概念 AWT事件處理過程中,主要涉及3類對象: ① Event(事件):用戶對組件的一個操作,稱之為一個事件,以類的形式出現,例如,鍵盤操作對應的事件類是KeyEvent。其實例在該事件發生時由系統自動產生。每一種事件都對應專門的監聽者。 ② Event Source(事件源):事 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...