首先我們看一組聊天記錄
ioc(inversion of controll,控制反轉)是一種設計思想,將原本在程式中手動建立物件的控制權,交由給spring框架來管理。ioc容器是spring用來實現ioc的載體,ioc容器實際上就是乙個map(key, value),map中存放的是各種物件。
這樣可以很大程度上簡化應用的開發,把應用從複雜的依賴關係中解放出來。ioc容器就像是乙個工廠,當需要建立乙個物件,只需要配置好配置檔案/註解即可,不用考慮物件是如何被建立出來的,大大增加了專案的可維護性且降低了開發難度。
aop
aop(aspect-oriented programming,面向切面程式設計)能夠將那些與業務無關,卻為業務模組所共同呼叫的邏輯或責任(例如事務處理、日誌管理、許可權控制等)封裝起來,便於減少系統的重複**,降低模組間的耦合度,並有利於未來的可擴充套件性和可維護性。使用aop之後我們可以把一些通用功能抽象出來,在需要用到的地方直接使用即可,這樣可以大大簡化**量,提高了系統的擴充套件性。
spring aop是基於動態**的,如果要**的物件實現了某個介面,那麼spring aop就會使用jdk動態**去建立**物件;而對於沒有實現介面的物件,就無法使用jdk動態**,轉而使用cglib動態**生成乙個被**物件的子類來作為**。
spring aop/aspectj aop的區別?
spring aop屬於執行時增強,而aspectj是編譯時增強。
spring aop基於**(proxying),而aspectj基於位元組碼操作(bytecode manipulation)。
aspectj相比於spring aop功能更加強大,但是spring aop相對來說更簡單。如果切面比較少,那麼兩者效能差異不大。但是,當切面太多的話,最好選擇aspectj,它比springaop快很多。
spring面試題目
目錄 一 spring mvc工作原理二 為什麼要用spring 1 spring能很好的與各大框架進行整合 2 建立物件時,如果我們不用spring需要用工廠模式來建立,這個spring相當於工廠模式已經幫我們做了建立物件的功能 ioc 依賴注入 3 在用hibernate的時候,如果不用spri...
Spring面試題分享
1.下面關於 依賴注入 的說法,錯誤的是 d a.將元件間的依賴關係採取配置檔案的方式管理,而不是硬編碼在 中 b.降低了元件間的耦合,使程式更容易維護和公升級 c.促進了 面向介面程式設計 使構建大規模程式更輕鬆 d.需要定義大量介面,增加編碼複雜度 2.關於spring說法錯誤的是 b a.sp...
Spring框架面試題
用動態 和cglib實現,有介面的用動態 無介面的用cglib spring 充當了管理容器的角色,為大部分框架提供模板,給常見的核心類提供初始化,並且整合三層框架 內部用hashmap實現 ioc是一種控制反轉的思想,降低了物件的耦合度,aop是面向切面程式設計,非侵入式程式設計 用來實現非業務性...