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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...