1. 程式人生 > >對Spring Ioc和AOP的理解

對Spring Ioc和AOP的理解

轉載自:https://blog.csdn.net/u013148153/article/details/80293587 

Ioc和AOP是Spring的兩大核心,面試的時候也經常被問及對這兩個概念的理解,因此也記下我對此的理解,方便以後查漏補缺。 
一、控制反轉(Ioc, Inversion of Controll)
  所謂控制反轉,即由Spring來負責控制物件的生命週期和物件間的相互關係。通常,在實現一個業務邏輯時需要多個物件相互協作來完成,每個物件在使用它的協作物件時都要通過new Obeject()的方式來建立,這樣加大了物件間的耦合程度。

  而Ioc則是:對這些相互依賴物件的建立和協調工作都交由Spring容器來實現,當某個物件需要其他協作物件時,由Spring動態的通過依賴注入(DI, Dependency Injection)的方式來提供協作物件,其只需要關注業務本身的邏輯即可。

二、面向切面程式設計(AOP, Aspect Oriented Programming)
  說到AOP就不得不先說一下OOP(Object Oriented Programming, 面向物件程式設計),OOP引入封裝、繼承、多型等概念建立一種縱向的開發方式,而AOP則是建立了一種橫向的開發方式。對於如許可權認證、日誌、事務等幾乎業務功能都需要的功能,若採用OOP的設計則會產生大量的重複程式碼,不利於各模組的重用。

  而AOP則把系統分為兩部分:核心關注點和橫切關注點。業務的核心處理流程為核心關注點,與之相對的諸如上面提到的許可權認證、日誌、事務等則為橫切關注點。AOP思想的作用在於分離系統中的各種關注點,進一步解耦模組間的相互依賴,提高模組的重用性。