1. 程式人生 > >程式猿,在面試中怎麼回答Spring,IOC,AOP(附教程和書籍)

程式猿,在面試中怎麼回答Spring,IOC,AOP(附教程和書籍)

你對spring的理解是什麼?

答:

spring:

  1. 開源框架

  2. IoC(控制反轉),將類的建立和依賴關係寫在配置檔案裡,由配置檔案注入,實現了鬆耦合

  3. AOP 將安全,事務等於程式邏輯相對獨立的功能抽取出來,利用spring的配置檔案將這些功能插進去,實現了按照方面程式設計,提高了複用性

或者

答:

概念Spring是一個輕型容器(light-weight container),其核心是Bean工廠(Bean Factory),用以構造我們所需要的M(Model)。在此基礎之上,Spring提供了AOP(Aspect-Oriented Programming, 面向層面的程式設計)的實現,用它來提供非管理環境下申明方式的事務、安全等服務;對Bean工廠的擴充套件ApplicationContext更加方便我們實現J2EE的應用;DAO/ORM的實現方便我們進行資料庫的開發;Web MVC和Spring Web提供了Java Web應用的框架或與其他流行的Web框架進行整合。

struts跟spring的區別?

structs:和ww2等一樣,都是典型的mvc結構框架,至於mvc是什麼,地球人都知道,如果你不知道就google吧:),structs偏重於表現層,它自己起一個控制器的作用即controller,它可以良好的把表現層與業務層分離開來。

spring:說白了就是一個大雜燴,提供了目前各種流行框架的整合,經典的有對hibernate的整合,此外,如mail,axis...各種都有。另外,它比較經典的就是IOC與AOP的功能,樓上已經有人說了,如果你不知道,去google。此外,它還提供了Spring MVC,它基於webflow,至於用法,去查它的文件。

structs的actionform是公認的敗筆,我用得痛苦得不得了。

另外,你說的重複提交,那是瀏覽器的問題,和structs無關。看你如何指揮瀏覽器了,如果你用redirect,就沒有重複提交的問題,因為瀏覽器已經重定向了。但是你用forward,那在你重新整理的時候就是重複提交。

Spring比較偏重於業務層,在頁面上一般是不顯示出來的。當然,如果你用Spring的MVC例外。

spring 的優點?

1.降低了元件之間的耦合性 ,實現了軟體各層之間的解耦

2.可以使用容易提供的眾多服務,如事務管理,訊息服務等

3.容器提供單例模式支援

4.容器提供了AOP技術,利用它很容易實現如許可權攔截,執行期監控等功能

5.容器提供了眾多的輔助類,能加快應用的開發

6.spring對於主流的應用框架提供了整合支援,如hibernate,JPA,Struts等

7.spring屬於低侵入式設計,程式碼的汙染極低

8.獨立於各種應用伺服器

9.spring的DI機制降低了業務物件替換的複雜性

10.Spring的高度開放性,並不強制應用完全依賴於Spring,開發者可以自由選擇spring的部分或全部

什麼是DI機制?

依賴注入(Dependecy Injection)和控制反轉(Inversion of Control)是同一個概念,具體的講:當某個角色需要另外一個角色協助的時候,在傳統的程式設計過程中,通常由呼叫者來建立被呼叫者的例項。但在spring中建立被呼叫者的工作不再由呼叫者來完成,因此稱為控制反轉。建立被呼叫者的工作由spring來完成,然後注入呼叫者

因此也稱為依賴注入。

spring以動態靈活的方式來管理物件 , 注入的兩種方式,設定注入和構造注入。

設定注入的優點:直觀,自然

構造注入的優點:可以在構造器中決定依賴關係的順序。

什麼是AOP?

面向切面程式設計(AOP)完善spring的依賴注入(DI),面向切面程式設計在spring中主要表現為兩個方面

1.面向切面程式設計提供宣告式事務管理

2.spring支援使用者自定義的切面

使用Spring框架的好處是什麼?

  • 輕量:Spring 是輕量的,基本的版本大約2MB。

  • 控制反轉:Spring通過控制反轉實現了鬆散耦合,物件們給出它們的依賴,而不是建立或查詢依賴的物件們。

  • 面向切面的程式設計(AOP):Spring支援面向切面的程式設計,並且把應用業務邏輯和系統服務分開。

  • 容器:Spring 包含並管理應用中物件的生命週期和配置。

  • MVC框架:Spring的WEB框架是個精心設計的框架,是Web框架的一個很好的替代品。

  • 事務管理:Spring 提供一個持續的事務管理介面,可以擴充套件到上至本地事務下至全域性事務(JTA)。

  • 異常處理:Spring 提供方便的API把具體技術相關的異常(比如由JDBC,Hibernate or JDO丟擲的)轉化為一致的unchecked 異常。

在Spring框架中如何更有效地使用JDBC?

使用SpringJDBC 框架,資源管理和錯誤處理的代價都會被減輕。所以開發者只需寫statements 和 queries從資料存取資料,JDBC也可以在Spring框架提供的模板類的幫助下更有效地被使用,這個模板叫JdbcTemplate。

在這裡給大家提供一個交流,討論的平臺,java架構師群671017482