Spring基礎問答

摘自網絡java

 

1  Spring工做原理web

1.首先讀取配置文件到容器中。spring

2.經過java反射機制將配置文件中描述的對象轉換成java對象;數據庫

3.將這些java對象按照配置文件中的定義將他們注入到各自匹配的對象中去。編程

2  爲何要用Spring設計模式

Spring的目的是讓對象與對象之間的關係沒有經過代碼來關聯,經過配置文件說明管理。Spring容器的核心功能是IOCAOPIOC即控制反轉,動態注入。使用對象以前沒必要使用new關鍵字本身建立,從IOC容器中直接獲取。安全

AOP即面向切面編程,提供對某一類對象的事物管理服務。(調用該類具體方法的先後調用指定模塊)網絡

3  Spring中的BeanFactoryApplicationContext的做用有哪些?session

BeanFactory負責建立和分發各類bean;架構

在建立bean的同時負責協調bean之間的關係,從而下降bean之間的耦合性;

調用用戶定義的建立和銷燬方法,負責Bean的生命週期;

ApplicationContext提供了文本解析工具,包括對國際化的支持。

提供了載入文件資源的通用方法,如載入圖片。

向註冊爲監聽器的Bean發送事件。

      

4  如何在spring中實現國際化?

添加Spring表單標籤庫tld文件

web.xml文件中添加該標籤庫的引用

建立資源庫文件ApplicationResources.properties利用native2ascii工具將目標文件轉換爲要國際化的語言類別

applicationContext.xml文件中添加資源庫配置

標籤化JSP頁面中的文字

5  使用spring有什麼好處?

1.提供了一種管理對象的方法,能夠把中間層對象有效地組織起來。一個完美的框架黏合劑
  2. 採用了分層結構,能夠增量引入到項目中。
  3. 有利於面向接口編程習慣的養成。
  4. 目的之一是爲了寫出易於測試的代碼。
  5. 非侵入性,應用程序對Spring API的依賴能夠減至最小限度。
  6. 一致的數據訪問介面。
  7. 一個輕量級的架構解決方案。

6  什麼是spring?它有什麼特色?

Spring是輕量級的控制反轉和麪向切面的容器框架。

       具備分層的體系結構,能夠選擇本身須要的功能模塊。

       簡化系統架構的設計,提供管理業務對象的方法。

       不只不會對其餘框架有依賴性,還提供對其餘框架(StrutsHibernate)的更好的粘合的機制

7  Hibernate應用與傳統JDBC應用的比較

Hibernatejava對象/關係數據庫映射工具。JDBCJava Data Base Connectivity,java數據庫鏈接)是一種用於執行SQL語句的Java API,能夠爲多種關係數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。

(1).關係型數據庫與JDBC是一對一的關係,只須要簡單配置就能夠實現,因此Hib系,Hibernate與關係型數據庫是一對多的關ernate是跨數據庫平臺的。

(2)代碼中,Hibernate能夠不使用本地化SQL語句完成對數據的SUDI,與數據庫是鬆耦合,JDBC不能。

(3)Hibernate很好地兼容了JDBC,能夠在代碼中直接嵌入JDBC API,但不提倡這樣作。

(4)Hibernate擁有數據鏈接池實現機制(sessionFactory)。

8  什麼是aopaop的做用是什麼?

AOP即面向切面編程。AOP提供對某一類對象的事物管理服務。(調用該類具體方法的先後調用指定模塊)

請闡述Spring框架和EJB相比較,各自的優缺點?

EJB 是優良的業務對象分佈式框架,EJB容器具備事務管理,安全機制功能;

EJB是重量級的,部署麻煩;

EJB 代碼不能脫離EJB 容器;

購買EJB 容器價錢昂貴,啓動緩慢;

Spring框架是輕量級的架構,支持EJB並對其實現更加簡化,實現瞭解耦,並脫離了容器;

中斷了應用程序的邏輯,使代碼變得不完整,不直觀。
將本來應該代碼化的邏輯配置化,增長了出錯的機會以及額外的負擔。

失去了IDE的支持。
調試階段不直觀,後期的bug對應階段,不容易判斷問題所在。

10 Spring IoC核心模式中,試比較二種推薦的依賴注入方式的相同點和不一樣點?

       設置注入和構造注入都具備無侵入性的特色。

       構造注入:

構造注入避免了煩瑣的setter方法的編寫,從而使得組件被建立後處於相對穩定狀態;

       類之間的關聯關係僅在構造函數中表達,使得系統層次清晰;

       經過構造注入,能夠在構造函數中決定依賴關係得注入順序,優先依賴的先注入;

       設置注入:

       經過setter方法設定依賴關係顯得更加直觀,天然;

       若是依賴關係(或繼承關係)較爲複雜,設置注入則更爲簡潔;

       對於某些第三方類庫,有求組件必須提供默認的構造函數,此時構造注入就有了侷限性,採用設置注入爲佳。

 

11  SpringBean的自動裝配都有哪些選擇?

1-->byName模式:這種模式是經過bean的屬性名字進行自動裝配的,也就是說在xml配置文件中查找一個與將要裝配的屬性相同名字的bean2:--->byType模式

byType就是指的若是在.xml配置文件中有一個與屬性類型同樣的Bean,spring就會自動裝配這個屬性,若是要是多於一個這樣的bean的話,則程序會拋出異常.咱們知道要使用byName模式的話BeanID 必須和屬性名稱想對應,若是咱們使用byTpe模式的話,則不用考慮BeanID名稱與屬性名稱的問題了.對於byType匹配模式咱們就不在給出範例了,你們只要把上面兩個範例中的byName該成byType便可.

3:--->constructor
constructor
模式就是根據構造函數的參數進行自動裝配、

4:--->autodetect模式
autodetect
模式就是指經過對Bean檢查類的內部來選擇是使用constructor模式裝配仍是使用byType模式裝配,若是先找到的是constructor模式那麼就使用constructor模式進行裝配,若是沒有constructor,而找到了byType,那麼就使用byType,一樣這種模式也不給出具體範例了,你們按照上述範例進行改造如下就能夠了,這樣也能夠鍛鍊如下你們的動手能力,若是有什麼問題,你們能夠按照首頁上給出的聯繫方式與我聯繫.接下來我門來看如下最後一種裝配模式.

5:--->no模式
相信你們從字面上的意思理解,就能夠知道這種模式的意思了,既不使用自動裝配模式,這種也是默認的配置,在不少企業級的應用中並不鼓勵使用自動裝配模式,由於它對於Bean之間的參考依賴關係不清晰

 


12  Spring 框架的個模塊功能

組成 Spring 框架的每一個模塊(或組件)均可以單獨存在,或者與其餘一個或多個模塊聯合實現。每一個模塊的功能以下:

1)核心容器(Spring Core

    這是Spring框架最基礎的部分,它提供了依賴注入特徵來實現容器對Bean的管理。這裏最基本的概念是BeanFactory,這是任何Spring應用的核心。BeanFactory是工廠模式的一個實現,它使用IOC將應用配置和依賴說明從實際的應用代碼中分離出來。

2Spring 上下文(Spring Context

    核心模塊的BeanFactory使Spring成爲一個容器,而上下文模塊使它成爲一個框架,這個模塊擴展了BeanFactory的概念,增長了對國際化消息,事件傳播及驗證的支持,同時提供了電子郵件、JNDI訪問、遠程等企業服務。

3Spring 的面向方面的編程(Spring AOP

    Spring在它的AOP模塊中提供了面向切面編程的豐富支持。這個模塊是在Spring應用中實現切面編程的基礎。爲了確保Spring與其它AOP框架的互用性,SpringAOP支持基於AOP聯盟定義的APIAOP是一個開源項目,經過定義一組共同的接口和組件來促進AOP的使用以及不一樣的AOP實現之間的互用性。同時將元數據編程引入了Spring,能夠爲你的源代碼增長註釋,指示Spring在何處以及如何應用於切面函數。

4Spring JDBC DAO 抽象層(Spring DAO

    使用JDBC常常導至大量的重複代碼,取得鏈接、建立語句、處理結果集,而後關閉鏈接。SpringJDBCDAO模塊抽取了這些重複代碼,所以你能夠保持你的數據庫訪問代碼乾淨簡潔,而且能夠防止因關閉數據庫資源失敗而引發的問題。

5Spring ORM 的對象關係工具(Spring ORM

    對那些更喜歡使用對象/關係映射工具而不是直接使用JDBC的人,Spring提供了ORM模塊。Spring並不試圖實現它本身的ORM解決方案,而是爲幾種流行的ORM框架提供了集成方案,包括:HibernateJDOIbatis SQL映射。

6Spring Web 模塊(Spring Web

    Web上下文模塊創建於應用上下文模塊之上,提供了一個適合於Web應用於的上下文。另外,這個模塊還提供了一些面向服務支持,它也提供了Spring和其它Web框架的集成,好比:Struts.

7Spring MVC 框架(Spring Web MVC

    Spring爲構建成Web應用提供了一個功能全面的MVC框架。雖然Spring能夠很容易地與其它MVC框架集成,例如Struts,但SpringMVC框架使用IOC對控制邏輯和業務對象提供了徹底的分離。

   Spring真正的精華是它的Ioc模式實現的BeanFactoryAOP

 

 

13  輕量級的J2EE應用開發框架的具體體現(Spring輕量級在J2EE應用開發框架的具體體現

Spring Framework解決了許多在J2EE開發中常見的問題。

       Springjar包通常不超過1M

       Spring 簡化並融合了EJB

       Spring 經過配置文件管理Bean文件

 

14  非侵入式的體現以及如何達到非侵入式的設計目標

1非侵入式的體現

q     容許在應用系統中自由地選擇和組裝Spring的各功能模塊,而且不強制要求應用中的類必須從Spring 的系統API中的某個類來繼承或者實現某個接口。

q     同時提供和其它框架集成的接口,如與HibernateStruts 的集成等;

2)如何達到非侵入式的設計目標

p     應用JavaReflection機制

<property name=「bean1」><ref bean=「anotherbean」/></property>

p     並配合使用Spring中的核心的BeanWrapperBeanFactory類組件---實現對象的建立和屬性注入

15  爲何要面向接口進行設計

面向接口編程是面向對象的核心,面向接口設計能夠提供不一樣靈活的子類實現,從而減小耦合性,加強代碼穩定和健壯性。

16  模式和框架的區別

模式是一種設計思想,提供一種指導從而作出優良的設計方案;

框架是一種軟件,一組組件;

設計模式比框架更抽象

框架比設計模式更加特徵化

設計模式是比框架更小的體系結構元素

17  Struts運行原理

?          客戶端請求*.do的路徑。

?          Struts框架的中心控制器(一般爲ActionServlet類的實例,或者用戶自定義的ActionServlet的子類的實例)截獲到客戶請求。

?          中心控制器根據struts-config.xml文件中配置的映射信息將請求轉發給相應的Action組件對象來處理。

?          若是請求頁面配置了對應的ActionForm組件,控制器類還會把表單數據填入ActionForm組件。

?          得到路徑對應的Action組件的實例。

?          調用Action組件實例的execute方法處理請求,並傳ActionForm對象。

?           Action組件對象提取ActionForm組件對象中包含的請求數據,而後調用封裝了業務邏輯的模型組件進行業務邏輯處理。

?           Action對象根據模型組件的處理結果返回相應的ActionForward對象給中心控制器。

?          中心控制器根據struts-config.xml文件中的配置信息肯定要跳轉的頁面。

?          跳轉到ActionForward頁面,呈現用戶數據。

18  StrutsActionForm有什麼做用?

1ActionForm Bean是一種JavaBean,除了具備一些JavaBean的常規方法,還包含一些特殊方法,用於驗證HTML表單數據以及將其屬性從新設置爲默認值。
2
Struts框架利用ActionForm Bean來進行View組件和Controller組件之間表單數據的傳遞。
3
Struts框架把View組件接受到的用戶輸入的表單數據保存在ActionForm Bean中,把它傳遞Controller組件,Controller組件能夠對ActionForm Bean中的數據進行修改,JSP文件使用Struts標籤讀取修改後的ActionForm Bean的信息,從新設置HTML表單。 

19        簡述手工搭建Struts開發部署環境步驟?

一、            添加支持的Struts jar

二、            添加Strutstld標籤庫文件

三、            建立struts-config.xml

四、            web.xml文件中對StrutsActionServlet進行配置聲明

相關文章
相關標籤/搜索