1. 程式人生 > >spring的IOC和AOP詳細講解

spring的IOC和AOP詳細講解

1.解釋spring的ioc? 幾種注入依賴的方式?spring的優點? 

      IOC你就認為他是一個生產和管理bean的容器就行了,原來需要在呼叫類中new的東西,現在都是有這個IOC容器進行產生,同

時,要是產生的是單例的bean,他還可以給管理bean的生命週期! 

       spring的IOC有三種注入方式 :

             第一是根據屬性注入 也叫set方法注入;

             第二種是根據構造方法進行注入;

             第三種是根據註解進行注入,這種方式我認為比較好,方便,要是bean多的話,使用前兩種方式會使得配置檔案過於臃腫。

 Spring的優點:主要是根據它的IOC和AOP體現的。我感覺他就是把我們以前用到的工廠模式和代理模式進行了一個封裝。

 IOC主要是解決了程式碼的耦合性問題,而AOP是面向切面程式設計的最好解釋!

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把他們應用的更靈活方便 。