1. 程式人生 > >請你談談對spring的理解?

請你談談對spring的理解?

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