1.解釋spring的ioc? 幾種注入依賴的方式?spring的優勢? java
IOC你就認爲他是一個生產和管理bean的容器就好了,原來須要在調用類中new的東西,如今都是有這個IOC容器進行產生,同spring
時,要是產生的是單例的bean,他還能夠給管理bean的生命週期! 數據庫
spring的IOC有三種注入方式 :編程
第一是根據屬性注入 也叫set方法注入;設計模式
第二種是根據構造方法進行注入;安全
第三種是根據註解進行注入,這種方式我認爲比較好,方便,要是bean多的話,使用前兩種方式會使得配置文件過於臃腫。框架
Spring的優勢:主要是根據它的IOC和AOP體現的。我感受他就是把咱們之前用到的工廠模式和代理模式進行了一個封裝。函數
IOC主要是解決了代碼的耦合性問題,而AOP是面向切面編程的最好解釋!oop
2.解釋Spring中IOC, DI, AOP設計
ioc就是控制翻轉或是依賴注入。通俗的講就是若是在什麼地方須要一個對象,你本身不用去經過new 生成你須要的對象,
而是經過spring的bean工廠爲你長生這樣一個對象。
aop就是面向切面的編程。好比說你每作一次對數據庫操做,都要生成一句日誌。若是,你對數據庫的操做有不少類,
那你每一類中都要寫關於日誌的方法。可是若是你用aop,那麼你能夠寫一個方法,在這個方法中有關於數據庫操做的方法,
每一次調用這個方法的時候,就加上生成日誌的操做。
3.spring的ioc/aop/代理
ioc是控制反轉,是spring的核心思想。經過面向接口編程來實現對業務組件的動態依賴。 aop是面向
切面編程,它並非只在spring或者java中才有的,它和麪向對象編程(oop)是相對而言的另外一種編程思想。
spring在實現aop編程時利用的是java的代理機制。我的以爲java代理機制真的是很神奇。核心內容並很少
4.spring的ioc是解耦,aop是幹什麼的
AOP面向切面編程將程序中的交叉業務邏輯(好比安全,日誌,事務等),封裝成一個切面,而後注入到目標對象(具體業務邏輯)中去。
好比:不少方法可能會拋異常,你要記錄這個異常到日誌中去,能夠寫個攔截器類,在這個類中記錄日誌,
在spring.xml中配置一個對這些要記錄日誌的方法的aop攔截器在這個方法執行後調用這個攔截器,記錄日誌。
這樣就不用每次拋異常都要手動記錄日誌。 spring的事務管理用到的就是aop 這樣也能夠提升程序的內聚性。
5.講解一下Java中Spring中IOC和AOP
IoC:說直白點,就是經過配置文件(XML或.properties)指定須要實例化的JAVA類(類名的完整字符串),
包括該JAVA類的一組初始化值,而後咱們在代碼中加載該配置文件,而後經過 .getBean() 函數就能夠獲得一個該JAVA類的對象,
而且該對象已經根據配置文件中指定的屬性值進行了初始化。
AOP:這個比IoC更簡單,直白點說就是實現調用某個方法以前或/和以後,自動執行一系列自定義的語句
6.簡述Spring框架中IOC和AOP
IOC:控制反轉,是一種設計模式。一層含義是控制權的轉移:由傳統的在程序中控制依賴轉移到由容器來控制;
第二層是依賴注入:將相互依賴的對象分離,在spring配置文件中描述他們的依賴關係。他們的依賴關係只在使用的時候才創建。
AOP:面向切面,是一種編程思想,OOP的延續。將系統中非核心的業務提取出來,進行單獨處理。好比事務、日誌和安全等。
Spring 的AOP和IOC都是爲了解決系統代碼耦合度太高的問題。使代碼重用度高、易於維護。
不過AOP和IOC並非spring中特有的,只是spring把他們應用的更靈活方便 。