關於Spring總結

来源:http://www.cnblogs.com/Onlywjy/archive/2017/08/17/7383903.html
-Advertisement-
Play Games

關於Spring總結 Spring引入 傳統的基於mvc的項目框架結構:Entity / dao / service / action 簡單用戶訪問流程:/user.action Tomcat (伺服器創建Action、Service、dao 引出思考: 1. 對象創建創建能否寫死? 2. 對象創建 ...


關於Spring總結

Spring引入

傳統的基於mvc的項目框架結構:Entity / dao / service / action

簡單用戶訪問流程:/user.action ----> Tomcat (伺服器創建Action、Service、dao

引出思考:
1. 對象創建創建能否寫死?
2. 對象創建細節
對象數量
action 多個 【維護成員變數】
service 一個 【不需要維護公共變數】
dao 一個 【不需要維護公共變數】
創建時間
action 訪問時候創建
service 啟動時候創建
dao 啟動時候創建
3. 對象的依賴關係
action 依賴 service
service依賴 dao

總結:Spring就是解決上面的問題的.簡單來說,就是處理對象的創建的、以及對象的依賴關係,降低組件之間的耦合度,實現軟體各層之間的解耦。

Spring介紹

  • Spring是什麼?

    Spring是一個非常活躍的開源框架, 它是一個基於IOC和AOP來構架多層JavaEE系統的框架,它的主要目地是簡化企業開發,Spring以一種非侵入式的方式來管理你的代碼, Spring提倡”最少侵入”,這也就意味著你可以適當的時候安裝或卸載Spring。

  • 具體描述Spring

  1. 輕量級:Spring 是非侵入性的>基於 Spring 開發的應用中的對象可以不依賴於 Spring 的 API,基礎版本的Spring框架大約只有2MB.

    組件/框架設計
    侵入式設計
      引入了框架,對現有的類的結構有影響;即需要實現或繼承某些特定類。
      例如:   Struts框架
    非侵入式設計
      引入了框架,對現有的類結構沒有影響。
      例如:Hibernate框架 / Spring框架
  2. 依賴註入(DI --- dependency injection、IOC)

      Spring使用控制反轉技術實現了松耦合。依賴被註入到對象,而不是創建或尋找依賴對象。
      a、IOC Inversion on Control , 控制反轉
        其思想是反轉資源獲取的方向. 傳統的資源查找方式要求組件向容器發起請求查找資源. 作為回應, 容器適時的返回資源. 而應用了 IOC 之後, 則是容器主動地將資源推送給它所管理的組件, 組件所要做的僅是選擇一種合適的方式來接受資源. 這種行為也被稱為查找的被動形式。可以簡單的理解為對象的創建交給外部容器完成,這個就叫做控制反轉.
      b、依賴註入,  dependency injection
        IOC 的另一種表述方式:即組件以一些預先定義好的方式(例如: setter 方法)接受來自如容器的資源註入. 相對於 IOC 而言,這種表述更直接。
    兩者區別:
      控制反轉: 解決對象創建的問題 【對象創建交給別人】
      依賴註入: 在創建完對象後,對象的關係的處理就是依賴註入 【通過set方法依賴註入】
  3. 面向切麵編程(AOP --- aspect oriented programming)

    a、採用了面向切麵編程來實現很多基礎但是與業務邏輯無關的功能的解耦,比如:事務管理、日誌、許可權驗證等。
    b、AOP 的主要編程對象是切麵(aspect), 而切麵模塊化橫切關註點.
    c、在應用 AOP 編程時, 仍然需要定義公共功能, 但可以明確的定義這個功能在哪裡, 以什麼方式應用, 並且不必修改受影響的類. 這樣一來橫切關註點就被模塊化到特殊的對象(切麵)里.
    關註點:
      重覆代碼就叫做關註點;
    切麵:
      關註點形成的類,就叫切麵(類)!
      面向切麵編程,就是指對很多功能都有的重覆的代碼抽取,再在運行的時候往業務方法上動態植入“切麵類代碼”。
    切入點:
      執行目標對象方法,動態植入切麵代碼。
      可以通過切入點表達式,指定攔截哪些類的哪些方法; 給指定的類在運行的時候植入切麵類代碼。
  4. 容器:Spring 是一個容器, 因為它包含並且管理應用對象的生命周期

  5. 框架:Spring 實現了使用簡單的組件配置組合成一個複雜的應用. 在 Spring 中可以使用 XML 和 Java 註解組合這些對象

  6. 一站式

     Spring提供了一站式解決方案:
    1) Spring Core  spring的核心功能: IOC容器, 解決對象創建及依賴關係
    2) Spring Web   Spring對web模塊的支持。
          可以與struts整合,讓struts的action創建交給spring
          spring mvc模式
    3) Spring DAO  Spring 對jdbc操作的支持
          【JdbcTemplate模板工具類】
    4) Spring ORM  spring對orm的支持:
          既可以與hibernate整合,【session】
          也可以使用spring的對hibernate操作的封裝
    5)Spring AOP  切麵編程
    6)SpringEE   spring 對javaEE其他模塊的支持

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

-Advertisement-
Play Games
更多相關文章
  • 題目描述 Copy從盧牛那裡聽說在一片叫yz的神的領域埋藏著不少寶藏,於是Copy來到了這個被劃分為個區域的神地。盧牛告訴了Copy這裡共有個寶藏,分別放在第Pi個(1<=Pi<=N)區域。Copy還得知了每個區域之間的距離。現在Copy從1號區域出發,要獲得所有的寶藏併到n號區域離開。Copy很懶 ...
  • 想挖個坑督促自己練技術,有時候想到一個項目,大概想了一些要實現的功能,怎麼實現。現在覺得自己差不多能完成QQ空間的主要功能了。準備立個牌坊,寫一個類似功能的網站。並且把進度放到這裡來。 初步計劃實現以下功能 1、用戶註冊、登錄、信息修改; 2、用戶進行好友關註、推送好用動態; 3、發表日誌、評論和評 ...
  • 目錄 題目描述 思路 程式(C++版&java版) 詳解 題目描述: 思路: 這道題實在是太經典,一道題裡面考察了幾個知識點: 1.鏈表是否有環的判斷 2.鏈表若有環,要找到環的入口節點 3.兩個鏈表的多種情況分析 另外,左老師講得實在是太贊了. 程式(詳解在後面): 詳解 先把幾種情況羅列一下: ...
  • 附圖一張: 今天閑來無事做,就想起同程SRC有一個公開漏洞模塊。然而閑的蛋疼的我就有了對其寫一個爬蟲將漏洞列表爬下來的衝動。有兩個版本,一個是單線程的。另一個是多線程的版本。 單線程版本: 多線程版本: 多線程使用的是Threading+Queue #coding=utf-8 import requ ...
  • 二、初識C語言 編程語言有很多種,主要分為三大類,分別是機器語言、彙編語言、高級語言。電腦只能識別和理解二進位代碼,也就是0和1。想一下,用機器語言來開發,我們得記住多少用0和1兩個數字所組成的指令代碼以及其代碼涵義?顯然,這是不合理的,這樣的編程枯燥且繁瑣費力,也容易出錯。彙編語言應運而生,彙編 ...
  • os模塊調用操作系統介面的模塊 相關方法或屬性: getcwd() 獲取當前的操作目錄,等同於linux中的pwd命令。 調用:os.getcwd() chdir() 改變python腳本的工作目錄。 調用:os.chdir(path) (path以字元串形式傳入) 例如: curdir 當前目錄 ...
  • 1.Rock Paper Scissors(剪刀 石頭 布) 說明:在電腦科學中有一種特別重要的游戲,因為它本身很簡單,可以用來創建非常狡猾的人工智慧演算法來對抗人類(或彼此),預測對手的行為。 這個古老的游戲是在兩個參與者之間進行的,他們同時用他們的手勢——石頭,紙或者剪刀。如果兩人都投了相同的手 ...
  • 昨天有個大牛說我啰嗦,眼光比較細碎,看不到重點。太他爺爺的有道理了!要說看人品,還是女孩子強一些。原來記得看到一個男孩子的抱怨,說怎麼兩人剛剛開始在一起,女孩子在心裡就已經和他過完了一輩子。哥哥們,不想這麼遠行嗎?看看何潔,看看帶著倆娃跳樓的媽媽。所以現在的女孩子是很明白的,有些男孩子個子不高,其貌 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...