Spring框架02-核心思想IOC和AOP

核⼼思想

注意:IOC和AOP不是spring提出的,在spring以前就已經存在,只不過更偏向於理論化,spring在技術層次把這兩個思想作了⾮常好的實現(Java)spring

IoC

什麼是IoC

IoC Inversion of Control (控制反轉/反轉控制):注意它是⼀個技術思想,不是⼀個技術實現編程

  • 描述的事情:Java開發領域對象的建立,管理的問題
  • 傳統開發⽅式:⽐如類A依賴於類B,每每會在類A中new⼀個B的對象
  • IoC思想下開發⽅式:咱們不⽤⾃⼰去new對象了,⽽是由IoC容器(Spring框架)去幫助咱們實例化對象而且管理它,咱們須要使⽤哪一個對象,去問IoC容器要便可
咱們喪失了⼀個權利(建立、管理對象的權利),獲得了⼀個福利(不⽤考慮對象的建立、管理等⼀系列     事情)
爲何叫作控制反轉
  • 控制:指的是對象建立(實例化、管理)的權利
  • 反轉:控制權交給外部環境了(spring框架、IoC容器)

image.png

IoC解決了什麼問題

IoC解決對象之間的耦合問題
image.png框架

IoC和DI的區別

DI:DependancyInjection(依賴注⼊) 怎麼理解?
IOC和DI描述的是同⼀件事情,只不過⻆度不⼀樣罷了

image.png

AOP

什麼是AOP

  • AOP: Aspect oriented Programming ⾯向切⾯編程/⾯向⽅⾯編程,AOP是OOP的延續,從OOP提及
  • OOP三⼤特徵:封裝、繼承和多態,oop是⼀種垂直繼承體系

image.png
OOP編程思想能夠解決⼤多數的代碼重複問題,可是有⼀些狀況是處理不了的,⽐以下⾯的在頂級⽗類Animal中的多個⽅法中相同位置出現了重複代碼,OOP就解決不了
image.pngoop

  • 橫切邏輯代碼

image.png

橫切邏輯代碼存在什麼問題:spa

  • 橫切代碼重複問題
  • 橫切邏輯代碼和業務代碼混雜在⼀起,代碼臃腫,維護不⽅便

AOP出場,AOP獨闢蹊徑提出橫向抽取機制,將橫切邏輯代碼和業務邏輯代碼分析
image.pngcode

代碼拆分容易,那麼如何在不改變原有業務邏輯的狀況下,悄⽆聲息的把橫切邏輯代碼應⽤到原有的業務邏輯中,達到和原來⼀樣的效果,這個是⽐較難的

AOP在解決什麼問題

在不改變原有業務邏輯狀況下,加強橫切邏輯代碼,根本上解耦合,避免橫切邏輯代碼重複對象

爲何叫作⾯向切⾯編程

「切」:指的是橫切邏輯,原有業務邏輯代碼咱們不能動,只能操做橫切邏輯代碼,因此⾯向橫切邏輯blog

「⾯」:橫切邏輯代碼每每要影響的是不少個⽅法,每⼀個⽅法都如同⼀個點,多個點構成⾯,有⼀個⾯的概念在⾥⾯繼承

相關文章
相關標籤/搜索