ssh相關(guān)面試題
ssh相關(guān)面試題
什么是Spring, 它有什么特點(diǎn)?下面就由學(xué)習(xí)啦小編為大家介紹一下ssh相關(guān)面試題的文章,歡迎閱讀。
ssh相關(guān)面試題篇1
什么是Spring, 它有什么特點(diǎn)
Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。
◆輕量——從大小與開(kāi)銷(xiāo)兩方面而言Spring都是輕量的。完整的Spring框架可以在一個(gè)大小只有1MB多的JAR文件里發(fā)布。并 且Spring所需的處理開(kāi)銷(xiāo)也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對(duì)象不依賴(lài)于Spring的特定類(lèi)。
◆控制反轉(zhuǎn)——Spring通過(guò)一種稱(chēng)作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦 合。當(dāng)應(yīng)用了IoC,一個(gè)對(duì)象依賴(lài)的其它對(duì)象會(huì)通過(guò)被動(dòng)的方式傳遞進(jìn)來(lái),而不是這個(gè)對(duì)象自己創(chuàng)建或者查找依賴(lài)對(duì)象。你可以認(rèn)為IoC與JNDI相反——不 是對(duì)象從容器中查找依賴(lài),而是容器在對(duì)象初始化時(shí)不等對(duì)象請(qǐng)求就主動(dòng)將依賴(lài)傳遞給它。
◆面向切面——Spring提供了面向切面編程的豐富支持,允許通過(guò)分離應(yīng)用的 業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)(例如審計(jì)(auditing)和事務(wù)()管理)進(jìn)行內(nèi)聚性的開(kāi)發(fā)。應(yīng)用對(duì)象只實(shí)現(xiàn)它們應(yīng)該做的——完成業(yè)務(wù)邏輯——僅此而已。它們 并不負(fù)責(zé)(甚至是意識(shí))其它的系統(tǒng)級(jí)關(guān)注點(diǎn),例如日志或事務(wù)支持。
◆容器——Spring包含并管理應(yīng)用對(duì)象的配置和生命周期,在這個(gè)意義上它是 一種容器,你可以配置你的每個(gè)bean如何被創(chuàng)建——基于一個(gè)可配置原型(prototype),你的bean可以創(chuàng)建一個(gè)單獨(dú)的實(shí)例或者每次需要時(shí)都生 成一個(gè)新的實(shí)例——以及它們是如何相互關(guān)聯(lián)的。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級(jí)的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。
◆框架——Spring可以將簡(jiǎn)單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對(duì)象被聲明式地組合,典型地是在一個(gè)XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開(kāi)發(fā)留給了你。
ssh相關(guān)面試題篇2
1、spring 的優(yōu)點(diǎn)?
1.降低了組件之間的耦合性 ,實(shí)現(xiàn)了軟件各層之間的解耦
2.可以使用容易提供的眾多服務(wù),如事務(wù)管理,消息服務(wù)等
3.容器提供單例模式支持
4.容器提供了AOP技術(shù),利用它很容易實(shí)現(xiàn)如權(quán)限攔截,運(yùn)行期監(jiān)控等功能
5.容器提供了眾多的輔助類(lèi),能加快應(yīng)用的開(kāi)發(fā)
6.spring對(duì)于主流的應(yīng)用框架提供了集成支持,如hibernate,JPA,Struts等
7.spring屬于低侵入式設(shè)計(jì),代碼的污染極低
8.獨(dú)立于各種應(yīng)用服務(wù)器
9.spring的DI機(jī)制降低了業(yè)務(wù)對(duì)象替換的復(fù)雜性
10.Spring的高度開(kāi)放性,并不強(qiáng)制應(yīng)用完全依賴(lài)于Spring,開(kāi)發(fā)者可以自由選擇spring的部分或全部
2、什么是DI機(jī)制?
依賴(lài)注入(Dependecy Injection)和控制反轉(zhuǎn)(Inversion of Control)是同一個(gè)概念,具體的講:當(dāng)某個(gè)角色
需要另外一個(gè)角色協(xié)助的時(shí)候,在傳統(tǒng)的程序設(shè)計(jì)過(guò)程中,通常由調(diào)用者來(lái)創(chuàng)建被調(diào)用者的實(shí)例。但在spring中
創(chuàng)建被調(diào)用者的工作不再由調(diào)用者來(lái)完成,因此稱(chēng)為控制反轉(zhuǎn)。創(chuàng)建被調(diào)用者的工作由spring來(lái)完成,然后注入調(diào)用者
因此也稱(chēng)為依賴(lài)注入。
spring以動(dòng)態(tài)靈活的方式來(lái)管理對(duì)象 , 注入的兩種方式,設(shè)置注入和構(gòu)造注入。
設(shè)置注入的優(yōu)點(diǎn):直觀,自然
構(gòu)造注入的優(yōu)點(diǎn):可以在構(gòu)造器中決定依賴(lài)關(guān)系的順序。
3. 簡(jiǎn)述你對(duì)IoC(Inversion of Control)的理解
一個(gè)類(lèi)需要用到某個(gè)接口的方法,我們需要將類(lèi)A和接口B的實(shí)現(xiàn)關(guān)聯(lián)起來(lái),最簡(jiǎn)單的方法是類(lèi)A中創(chuàng)建一個(gè)對(duì)于接口B的實(shí)現(xiàn)C的實(shí)例,但這種方法顯然兩者的依賴(lài)(Dependency)太大了。而IoC的方法是只在類(lèi)A中定義好用于關(guān)聯(lián)接口B的實(shí)現(xiàn)的方法,將類(lèi)A,接口B和接口B的實(shí)現(xiàn)C放入IoC的 容器(Container)中,通過(guò)一定的配置由容器(Container)來(lái)實(shí)現(xiàn)類(lèi)A與接口B的實(shí)現(xiàn)C的關(guān)聯(lián)。
4 解釋一下Dependency injection(DI,依賴(lài)注入)和IOC(Inversion of control,控制反轉(zhuǎn))?
參考答案:依賴(lài)注入DI是一個(gè)程序設(shè)計(jì)模式和架構(gòu)模型, 一些時(shí)候也稱(chēng)作控制反轉(zhuǎn),盡管在技術(shù)上來(lái)講,依賴(lài)注入是一個(gè)IOC的特殊實(shí)現(xiàn),依賴(lài)注入是指一個(gè)對(duì)象應(yīng)用另外一個(gè)對(duì)象來(lái)提供一個(gè)特殊的能力,例如:把一個(gè)數(shù)據(jù)庫(kù)連接已參數(shù)的形式傳到一個(gè)對(duì)象的結(jié)構(gòu)方法里面而不是在那個(gè)對(duì)象內(nèi)部自行創(chuàng)建一個(gè)連接。控制反轉(zhuǎn)和依賴(lài)注入的基本思想就是把類(lèi)的依賴(lài)從類(lèi)內(nèi)部轉(zhuǎn)化到外部以減少依賴(lài)
應(yīng)用控制反轉(zhuǎn),對(duì)象在被創(chuàng)建的時(shí)候,由一個(gè)調(diào)控系統(tǒng)內(nèi)所有對(duì)象的外界實(shí)體,將其所依賴(lài)的對(duì)象的引用,傳遞給它。也可以說(shuō),依賴(lài)被注入到對(duì)象中。所以,控制反轉(zhuǎn)是,關(guān)于一個(gè)對(duì)象如何獲取他所依賴(lài)的對(duì)象的引用,這個(gè)責(zé)任的反轉(zhuǎn)。
5、描述一下Spring中實(shí)現(xiàn)DI(Dependency Injection)的幾種方式
方式一:接口注入,在實(shí)際中得到了普遍應(yīng)用,即使在IOC的概念尚未確立時(shí),這樣的方法也已經(jīng)頻繁出現(xiàn)在我們的代碼中。
方式二:Type2 IoC: Setter injection對(duì)象創(chuàng)建之后,將被依賴(lài)對(duì)象通過(guò)set方法設(shè)置進(jìn)去
方式三:Type3 IoC: Constructor injection對(duì)象創(chuàng)建時(shí),被依賴(lài)對(duì)象以構(gòu)造方法參數(shù)的方式注入
Spring的方式
6、什么是AOP? (Aspect --Oriented Programming)
面向切面編程(AOP)完善spring的依賴(lài)注入(DI),面向切面編程在spring中主要表現(xiàn)為兩個(gè)方面
1.面向切面編程提供聲明式事務(wù)管理
2.spring支持用戶自定義的切面
面向切面編程(aop)是對(duì)面向?qū)ο缶幊?oop)的補(bǔ)充,
面向?qū)ο缶幊虒⒊绦蚍纸獬筛鱾€(gè)層次的對(duì)象,面向切面編程將程序運(yùn)行過(guò)程分解成各個(gè)切面。
AOP從程序運(yùn)行角度考慮程序的結(jié)構(gòu),提取業(yè)務(wù)處理過(guò)程的切面,oop是靜態(tài)的抽象,aop是動(dòng)態(tài)的抽象,
是對(duì)應(yīng)用執(zhí)行過(guò)程中的步驟進(jìn)行抽象,,從而獲得步驟之間的邏輯劃分
aop框架具有的兩個(gè)特征:
1.各個(gè)步驟之間的良好隔離性
2.源代碼無(wú)關(guān)性
ssh相關(guān)面試題篇3
事務(wù)就是對(duì)一系列的數(shù)據(jù)庫(kù)操作(比如插入多條數(shù)據(jù))進(jìn)行統(tǒng)一的提交或回滾操作,如果插入成功,那么一起成功,如果中間有一條出現(xiàn)異常,那么回滾之前的所有操作。
這樣可以防止出現(xiàn)臟數(shù)據(jù),防止數(shù)據(jù)庫(kù)數(shù)據(jù)出現(xiàn)問(wèn)題。
開(kāi)發(fā)中為了避免這種情況一般都會(huì)進(jìn)行事務(wù)管理。Spring中也有自己的事務(wù)管理機(jī)制,一般是使用TransactionMananger進(jìn)行管理,可以通過(guò)Spring的注入來(lái)完成此功能。
spring提供了幾個(gè)關(guān)于事務(wù)處理的類(lèi):
TransactionDefinition //事務(wù)屬性定義
TranscationStatus //代表了當(dāng)前的事務(wù),可以提交,回滾。
PlatformTransactionManager這個(gè)是spring提供的用于管理事務(wù)的基礎(chǔ)接口,其下有一個(gè)實(shí)現(xiàn)的抽象類(lèi)AbstractPlatformTransactionManager,我們使用的事務(wù)管理類(lèi)例如DataSourceTransactionManager等都是這個(gè)類(lèi)的子類(lèi)。
1. aop中的關(guān)鍵名詞有些那些,相互關(guān)系是什么?
攔截器: 代理
裝備(advice)
目標(biāo)對(duì)象
關(guān)切點(diǎn):條件
連接點(diǎn):方法、屬性
2. Spring中ApplicationContext的作用是什么?
beanFactory
國(guó)際化(getMesage)
資源管理:可以直接讀取一個(gè)文件的內(nèi)容(getResource)
加入web框架中(加入一個(gè)servlet或監(jiān)聽(tīng)器)
事件處理
3. spring中的核心類(lèi)有那些,各有什么作用?
BeanFactory:產(chǎn)生一個(gè)新的實(shí)例,可以實(shí)現(xiàn)單例模式
BeanWrapper:提供統(tǒng)一的get及set方法
ApplicationContext:提供框架的實(shí)現(xiàn),包括BeanFactory的所有功能
4. spring中的核心類(lèi)有那些,各有什么作用?
BeanFactory:產(chǎn)生一個(gè)新的實(shí)例,可以實(shí)現(xiàn)單例模式
BeanWrapper:提供統(tǒng)一的get及set方法
ApplicationContext:提供框架的實(shí)現(xiàn),包括BeanFactory的所有功能