Spring學習(一)概述
Spring框架優勢/為什麼要用Spring/Spring簡介
架構概述(對各種開發的支援):
Spring總結起來優點如下:
低侵入式設計,程式碼的汙染極低。
獨立於各種應用伺服器,基於Spring框架的應用,可以真正實現Write Once,Run Anywhere的承諾。
Spring的IoC容器降低了業務物件替換的複雜性,提高了元件之間的解耦。
Spring的AOP支援允許將一些通用任務如安全、事務、日誌等進行集中式管理,從而提供了更好的複用。
Spring的ORM和DAO提供了與第三方持久層框架的良好整合,並簡化了底層的資料庫訪問。
Spring的高度開放性,並不強制應用完全依賴於Spring,開發者可自由選用Spring框架的部分或全部。
Spring的核心機制
管理Bean
程式主要是通過Spring容器來訪問容器中的Bean,ApplicationContext是Spring容器最常用的介面,該介面有如下兩個實現類:
ClassPathXmlApplicationContext: 從類載入路徑下搜尋配置檔案,並根據配置檔案來建立Spring容器。
FileSystemXmlApplicationContext: 從檔案系統的相對路徑或絕對路徑下去搜索配置檔案,並根據配置檔案來建立Spring容器。
public class BeanTest{ public static void main(String args[]) throws Exception{ ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); Person p = ctx.getBean("person", Person.class); p.say(); } }
依賴注入
Spring框架的核心功能有兩個:
Spring容器作為超級大工廠,負責建立、管理所有的Java物件,這些Java物件被稱為Bean。
Spring容器管理容器中Bean之間的依賴關係,Spring使用一種被稱為"依賴注入"的方式來管理Bean之間的依賴關係。
控制反轉(Inverse of Control,IoC)/依賴注入(Dependency Injection),因此不管是依賴注入,還是控制反轉,其含義完全相同。當某個Java物件(呼叫者)需要呼叫另一個Java物件(被依賴物件)的方法時,在傳統模式下通常有兩種做法:
- 原始做法: 呼叫者主動建立被依賴物件,然後再呼叫被依賴物件的方法。
- 簡單工廠模式: 呼叫者先找到被依賴物件的工廠,然後主動通過工廠去獲取被依賴物件,最後再呼叫被依賴物件的方法。
注意上面的主動二字,這必然會導致呼叫者與被依賴物件實現類的硬編碼耦合,非常不利於專案升級的維護。使用Spring框架之後,呼叫者無需主動獲取被依賴物件,呼叫者只要被動接受Spring容器為呼叫者的成員變數賦值即可,由此可見,使用Spring後,呼叫者獲取被依賴物件的方式由原來的主動獲取,變成了被動接受——所以稱之為控制反轉。
另外從Spring容器的角度來看,Spring容器負責將被依賴物件賦值給呼叫者的成員變數——相當於為呼叫者注入它依賴的例項,因此稱之為依賴注入。
Spring的AOP
為什麼需要AOP
AOP(Aspect Orient Programming)也就是面向切面程式設計,作為面向物件程式設計的一種補充,已經成為一種比較成熟的程式設計方式。其實AOP問世的時間並不太長,AOP和OOP互為補充,面向切面程式設計將程式執行過程分解成各個切面。
AOP專門用於處理系統中分佈於各個模組(不同方法)中的交叉關注點的問題,在JavaEE應用中,常常通過AOP來處理一些具有橫切性質的系統級服務,如事務管理、安全檢查、快取、物件池管理等,AOP已經成為一種非常常用的解決方案。
使用AspectJ實現AOP
AspectJ是一個基於Java語言的AOP框架,提供了強大的AOP功能,其他很多AOP框架都借鑑或採納其中的一些思想。其主要包括兩個部分:一個部分定義瞭如何表達、定義AOP程式設計中的語法規範,通過這套語法規範,可以方便地用AOP來解決Java語言中存在的交叉關注點的問題;另一個部分是工具部分,包括編譯、除錯工具等。
AOP實現可分為兩類:
- 靜態AOP實現: AOP框架在編譯階段對程式進行修改,即實現對目標類的增強,生成靜態的AOP代理類,以AspectJ為代表。
- 動態AOP實現: AOP框架在執行階段動態生成AOP代理,以實現對目標物件的增強,以Spring AOP為代表。
一般來說,靜態AOP實現具有較好的效能,但需要使用特殊的編譯器。動態AOP實現是純Java實現,因此無須特殊的編譯器,但是通常效能略差。
相關推薦
Spring學習(一)概述
Spring框架優勢/為什麼要用Spring/Spring簡介 架構概述(對各種開發的支援): Spring總結起來優點如下: 低侵入式設計,程式碼的汙染極低。 獨立於各種應用伺服器,基於Spring框架的應用,可以真正實現Write Once,Run Anywhere
設計模式學習(一)-概述
項目 site 相對 實體 pattern 需要 gre 維護 pri 設計模式(Design Patterns) ——可復用面向對象軟件的基礎 設計模式(Design pattern)是一套被反復使用、多
spring學習(一)helloworld編寫總結
cati 流程 spring學習 一個 1-1 png cat 其中 XML 配置Bean: 配置bean的方式:1.基於xml文件的方式 2.基於註解的方式。 Bean的配置方式;1.通過全類名(反射)2.通過工廠方法 IOC容器:ApplicationContext和
spring-學習(一)
相關 細節 mvc 客戶端和服務器 web應用 利用 例如 常見 註入 概述 Spring 是最受歡迎的企業級 Java 應用程序開發框架。主要用來在java EE平臺上開發web應用。 好處 spring可以使開發人員使用pojos開發企業級的應用程序。 spring是有
verilog學習(一)概述
PS:本系列參考夏宇聞老師的Verilog數字系統設計jiao教程,意在對verilog形成基礎的體系,留作將來查詢參考,請大家多指教。 硬體描述語言(HDL,hardware description language)是一種形式化方法來描述數位電路和系統的語言。數
概率圖模型學習(一)概述
本文內容根據Stanford 教授 Daphne Koller 的公開課 Probabilistic Graphical Model內容整理。 1.什麼是概率圖模型 概率圖模型即為解決某一類應用問題的一個框架。在理解這個概念之前,首先來看兩個例子: 1) 上面這張圖片
spring學習(一)spring簡介
Spring簡介: Spring 框架是 Java 應用最廣的框架,它的成功來源於理念,而不是技術本身,它的理念包括 IoC (Inversion of Control,控制反轉) 和 AOP(Aspect Oriented Programming,面向切面程式設計)。
spring學習(一)屬性管理PropertySource類
一、PropertySource:用於存放key-value物件的抽象,子類需要實現getProperty(String name)返回對應的Value方法,其中value可以是任何型別不侷限在字串 注:PropertySource裡的屬性name和source都是fin
Python教程:進擊機器學習(一)--概述
開啟Python科學之旅 本章介紹了Python在機器學習中常用的庫和工具,包括數學計算和繪圖。 Python資料科學生態 為什麼選擇Python? 先獻上IEEE Spectrum Magazine 2017 程式設計排行圖一張
Spring學習(一)—入門
Spring是什麼? Spring是一個開源框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson建立。簡單來說,Spring是一個分層的JavaSE/EEfull-stack(一站式) 輕量級開源框架。 strut
Spring學習(一)-Spring入門示例
從本篇部落格開始,後續將重點學習Spring,並記錄學習過程中的點點滴滴。 開發環境:jdk 1.7,Eclipse Mars, Spring Framwork 4.3.0 1、 在Eclipse中
Spring 學習(一)-----裝配Bean
#裝配Bean ![image](裝配Bean.png) ### 一 自動裝配Bean ####1) 用@[email protected]+Spring 配置類名(指定 Spring 配置資訊的來源) <p>Printer.class <pre
Spring學習(一)--Spring的設計與整體架構
整合 prototype 數據庫操作 方案 obi 難度 struts框架 lin 設計 之前只是在學校裏大概的學習了一下Spring框架的使用以及一些最基本、淺顯的原理,並沒有做出深入的學習,等到工作之後想提升自己的時候發現所掌握的Spring框架的簡直爛如狗屎,為監督自
spring學習(一)
col gin 初始化 自動 message 方式 調度 加載 統一 spring結構圖 一、核心容器(core container):核心容器由spring-core,spring-beans,spring-context,spring-context-suppor
spring之註解(一)概述
dsm 的人 src article service 優缺點 中一 auto 數據 Spring的核心是依賴註入(DI),而依賴註入的基礎是依賴信息的配置。這些配置稱之為元數據。在之前的的學習中。一直採用的是基於xml的配置,這些元數據配置在spring內部被註冊成為B
Spring 源碼學習(一)
pla 註入 websocket web前端 tex 異常 messaging ping 完整 設計伊始 Spring 是為解決企業級應用開發的復雜性而設計,她可以做很多事。但歸根到底支撐Spring的僅僅是少許的基本理念,而所有地這些的基本理念都能可以追溯到一個
Java學習(一)基礎概述
java 所在 應用 enter 代碼實現 ase 產品 stand 就是 寫代碼: 1,明確需求。我要做什麽? 2,分析思路。我要怎麽做?1,2,3。 3,確定步驟。每一個思路部分用到哪些語句,方法,和對象。 4,代碼實現。用具體的java語言代碼把思路體現出來。 學
我們一起學習Spring之Spring簡介(一)
邏輯 style 發的 nfa 不同的 構建 john 局限 認識 首先聲明,我是一個spring初學者,寫這篇blog的目的是為了能和大家交流。文中不當之處還望大佬指出,不勝感激! 好了,現在我們開始進入正題。 很多小夥伴在學習Java的時候都會有人建議你去學
Spring-Boot學習(一)
圖片 public ram turn tps bind 實現 file clas 入門實例 - HelloWorld File > New > Spring Starter Project 項目創建完成: 這樣就完成了項目的創建,下面我們
源碼學習(一)——模擬Spring MVC
webapp lan conf 依賴 xtend .com inf pre 執行 1.準備 1.1創建項maven項目,目錄如下 1.2 導包 servlet-api: 模擬springmvc采用的是對同一個servlet進行處理 fastjson: JSONObject