Spring初步認識-(1)
Spring初步認識-(1)
Spring:為了適應企業級系統的大規模,即:使用者數量大
、資料規模大
、功能眾多
、效能和安全的要求高
、業務複雜
、靈活應變
的需求而產生的輕量級框架,
以上目的,由以下四個策略來實現:
- 基於POJO(Plain Old Java Object普通Java類)的輕量級和最小入侵性程式設計
- 通過依賴注入和麵向介面實現鬆耦合
- 基於切面的慣例進行宣告式程式設計
- 通過切面和模板減少樣板式程式碼
內容:IOC 容器,AOP實現資料訪問支援簡化JDBC/ORM框架宣告式事務 WEB整合
設計理念:面向Bean的程式設計
核心技術:
控制反轉(IOC : Inversion of Control)/依賴注入(DI :Dependency Injection)
面向切面程式設計:(AOP: Aspect Oriented Programming)
優點:
- 低侵入式設計(去除此框架後,只需要修改一些配置資訊,程式碼的汙染極低)
- 獨立於各大中應用伺服器
- 依賴注入的特性將元件關係透明化 ,降低了業務物件替換的複雜性,提高了元件之間的解耦
- 高內聚,低耦合
- AOP支援將一些通用的任務和安全、事務、日誌等進行集中式管理,從而提供了更好的複用
Spring框架是一個分層框架,包含了一系列的功能要素得分為大約20個模組
控制反轉(IOC)/依賴注入(DI)
將元件物件的控制權 從程式碼本身轉移到外部容器的思想:分離關注點,使用介面,不在關注實現(也就是由外部的IOC容器來控制元件物件的建立、銷燬,不需要我們去實現類)
spring 的出現,解耦合不同類之間的依賴,誰需要誰,都找 spring,一切由spring提供,不需要自己將類例項化
依賴注入:將元件的構建和使用分開,和控制反轉一樣,只是表述不同
AOP(Aspect Oriented Programming):
面向切面程式設計,函數語言程式設計的一種衍生泛型。,面向…程式設計,只是關注點的不同,例如:
- 程式導向程式設計: 就看實現一個功能需要什麼步驟,然後用程式碼表示出這些步驟就好了,不管程式碼的重用,耦合性問題。關注點是 步驟、過程。
- 物件導向程式設計: 需要實現該功能,但是需要考慮到流程的結構,程式碼重用,耦合問題。需要先建立一個物件,對這個物件例項化實現功能。關注點是 物件。
- 面向切面程式設計: 它關注於應用中的 核心業務 模組,而設法將一些次要的,輔助的功能統一管理,如日誌、安全、驗證等。
- AOP採取橫向抽取機制,取代了傳統的縱向繼承體系 重複性程式碼
- 經典應用:事務管理、效能監視、安全檢查、快取、日誌等等…
- Spring Aop 使用純Java實現,補充需要專門的編譯過程和類載入器,在執行期間通過代理方式向目標類 注入 增強程式碼
- AspectJ是一個基於Java語言的AOP框架,Spring 2.0開始 Spring AOP引入對Aspect 的支援,Aspect擴充套件了Java語言,提供一個專門的編譯器,在編譯時提供橫向程式碼的織入.
橫向:將一個類抽取出來,從其生命週期(時間軸)來操作,在其生命週期的不同階段加入一些可以共用的功能模組,來達到程式碼複用的目的。區別於在其原有的類上通過繼承,多型再去實現更多的功能。
在AOP中的一些概念:
1、目標類(target) , 需要被代理的類 例如 UserService
2、連線點(JoinPoint):是指那些可能被攔截的方法,例如 addUser 。。。。。
3、切入點(PointCut) 已經被增強的連線點 例如:addUser…….
4、通知/增強(advice) :增強程式碼 前置增強 後置增強 環繞增強 異常增強 最終增強
5、織入(Weaving) 是指把增強 advice 應用到目標物件target來建立新的代理物件Proxy的過程
6、代理類(Proxy)
7、Aspect(切面) 是切入點PointCut和通知advice的結合
參考: spring 框架的核心總結
相關文章
- Mybatis初步認識MyBatis
- 初步認識knockoutjsJS
- 初步認識Apache IgniteApache
- 初步認識 k8sK8S
- 初步認識ida軟體
- 網路報文初步認識
- 快速冪的初步認識(Java)Java
- OpenStack入門之初步認識
- 初步認識tomcat伺服器Tomcat伺服器
- 【XMPP】Smack原始碼之初步認識Mac原始碼
- 【人生苦短,我學 Python】基礎篇——初步認識(Day1)Python
- Workerman學習筆記(一)初步認識筆記
- 低程式碼 —— 初步認識 AppsmithAPPMIT
- webpack 快速入門 系列 —— 初步認識 webpackWeb
- 01MySQL的 庫、表初步認識MySql
- Swift 網路請求 : Moya初步認識Swift
- tornado 原始碼閱讀-初步認識原始碼
- 對vue原始碼的初步認識和理解Vue原始碼
- 認識mysql(1)MySql
- 關於瀏覽器外掛的初步認識瀏覽器
- 初步認識微前端(single-spa 和 qiankun)前端
- 前端學習 node 快速入門 系列 —— 初步認識 node前端
- 1. 認識tmuxUX
- spring 啟動的認識Spring
- Sql Server之旅——第十三站 對鎖的初步認識SQLServer
- 第1章 認識excelExcel
- 認識安全框架acegi(1)框架
- 從 0 到 1 認識 TypescriptTypeScript
- 我認識的python(1)Python
- Redis(1)_Redis的基本認識Redis
- 認識Spring引數解析器Spring
- Python學習 —— 初步認知Python
- RecyclerView從認識到實踐(1)View
- 1.認識作業系統作業系統
- Mybatis學習-初步認知與使用MyBatis
- vector 學習初步(1)
- (1)分散式搜尋ElasticSearch認識ElasticSearch分散式Elasticsearch
- JMeter學習筆記——認識JMeter(1)JMeter筆記