




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Spring部分1.談?wù)勀銓pring IOC和DI的理解,它們區(qū)別?IoC Inverse of Control 反轉(zhuǎn)控制的概念,就是將原本在程序中手動創(chuàng)建UserService對象的控制權(quán),交由Spring框架管理,簡單說,就是創(chuàng)建UserService對象控制權(quán)被反轉(zhuǎn)到了Spring框架 DI:Dependency Injection 依賴注入,在Spring框架負(fù)責(zé)創(chuàng)建Bean對象時,動態(tài)的將依賴對象注入到Bean組件面試題: IoC 和 DI的區(qū)別?IoC 控制反轉(zhuǎn),指將對象的創(chuàng)建權(quán),反轉(zhuǎn)到Spring容器 , DI依賴注入,指Spring創(chuàng)建對象的過程中,將對象依賴屬性通過配置進
2、行注入2.BeanFactory 接口和 ApplicationContext 接口別 ?區(qū)ApplicationContext 接口繼承BeanFactory接口,Spring工廠是BeanFactory ,BeanFactory采取延遲加載,第一次getBean時才會初始化Bean, ApplicationContext是會在加載配置文件時初始化Bean。ApplicationContext是對BeanFactory擴展,它可以進行國際化處理、事件傳遞和bean自動裝配以及各種不同應(yīng)用層的Context實現(xiàn)開發(fā)中基本都在使用 ApplicationContext, web 項 目 使 用W
3、ebApplicationContext ,很少用到BeanFactoryBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource(applicationContext.xml);IoServiceoService = (IoService); o();oService) beanFactory.getBean(oServiay3.spring配置bean實例化有哪些方式?1)使用類構(gòu)造器實例化(默認(rèn)無參數(shù)).spring.b_instanc2)使用靜態(tài)工廠方法實例化(簡單工廠模式)/下面這段配置的含義:調(diào)用Bean2
4、Factory的getBean2方法得到bean23)使用實例工廠方法實例化(工廠方法模式)/先創(chuàng)建工廠實例bean3Facory,再通過工廠實例創(chuàng)建目標(biāo)bean實例.spring.b_4.簡單的說一下spring的生命周期?1)在配置 元素,通過 init-method 指定Bean的初始化方法,通過 destroy-method 指定Bean銷毀方法需要注意:destroy-method 只對 scope=singleton 有效銷毀方法,必須關(guān)閉ApplicationContext對象(手動調(diào)用),*才會被調(diào)用ClassPathXmlApplicationContext applicat
5、ionContext= new ClassPathXmlApplicationContext(applicationC ontext.xml);applicationContext.close();2)Bean的完整生命周期 (十一步驟)【了解內(nèi)容,但是對于操作理解有一定幫助】springinstantiate bean對象實例化populate properties 封裝屬性如果Bean實現(xiàn)BeanNameAware執(zhí)行 setBeanName如果實現(xiàn)或BeanBeanFactoryAware者 ApplicationContextAware設(shè)置工廠 setBeanFactory 或者上下文
6、對象 setApplicationContext如果存在類實現(xiàn) BeantProsor(后處理Bean) ,執(zhí)行tProsor 接tProsBeforeInitialization , Bean口提供鉤子函數(shù),用來動態(tài)擴展修改Bean。(程序自動調(diào)用后處理Bean)public class MyBeantProsor implementsBeantProsor public ObjectString beanName)tProsAfterInitialization(Object bean,throws BeansException System.out.prln(第八步:后處理Bean,af
7、ter初始化。);/后處理Bean,在這里加上一個動態(tài),就把這個Bean給修改了。return bean;/返回bean,表示沒有修改,如果使用動態(tài)對象,那么就修改了。,返回public ObjecttProsBeforeInitialization(Objectbean, String beanName)throws BeansException System.out.prln(第五步:后處理Bean的:before初始化!);/后處理Bean,在這里加上一個動態(tài),就把這個Bean給修改了。return bean;/返回bean本身,表示沒有修改。注意:這個前處理Bean和后處理Bean會對
8、所有的Bean進行。如果Bean實現(xiàn)InitializingBean 執(zhí)行 aftropertiesSet調(diào)用 指定初始化方法 init 如果存在類實現(xiàn) BeantProsor (處理Bean ) ,執(zhí)行tProsAfterInitialization執(zhí)行業(yè)務(wù)處理如果Bean實現(xiàn) Disean 執(zhí)行 destroyab調(diào)用 指定銷毀方法 customerDestroy5.請介紹一下Spring框架中Bean的生命周期和作用域bean定義在配置文件里面用來進行定義。bean初始化有兩種方式初始化:A.在配置文件中通過指定init-method屬性來完成 B.實現(xiàn).springframwork.b
9、eans.factory.InitializingBean接口bean調(diào)用有三種方式可以得到bean實例,并進行調(diào)用bean銷毀銷毀有兩種方式A.使用配置文件指定的destroy-method屬性 B.實現(xiàn)eabean接.springframwork.bean.factory.Dis口#作用域 singleton當(dāng)一個bean的作用域為singleton, 那么Spring IoC容器中只會存在一個共享的bean實例,并且所有對bean的請求,只要id與該bean定義相匹配,則只會返回bean的同一實例。 prototypePrototype作用域的bean會導(dǎo)致在每次對該bean請求(將其注
10、入到另一個bean中,或者以程序的方式調(diào)用容器的getBean()方法)時都會創(chuàng)建一個新的bean實例。根據(jù)經(jīng)驗,對所有有狀態(tài)的bean應(yīng)該使用prototype作用域,而對無狀態(tài)的bean則應(yīng)該使用 singleton作用域request在一次HTTP請求中,一個bean定義對應(yīng)一個實例;即每次HTTP 請求將會有各自的bean實例, 它們依據(jù)某個bean定義創(chuàng)建而成。該作用 域僅在基于web的Spring ApplicationContext情形下 有效。ses在一個HTTP Ses中,一個bean定義對應(yīng)一個實例。該作用域僅在基于web的Spring ApplicationContext
11、情形下有效。global ses在一個全局的HTTP Ses中,一個bean定義對應(yīng)一個實例。典型情況下,僅在使用portlet context的時候有效。該作用域僅在基于 web的Spring ApplicationContext情形下有效。6.Bean注入屬性有哪幾種方式?spring支持構(gòu)造器注入和setter方法注入構(gòu)造器注入,通過 元素完成注入setter方法注入, 通過 元素完成注入【開發(fā)中常用方式】AOP,AOP的作用是什么?面向切面編程(AOP)提供另外一種角度來思考程序結(jié)構(gòu),通過這種7.方式彌補了面象編程(OOP)的,除了類(classes)以外,AOP提供了切面。切面對關(guān)注
12、點進行模塊化,例如橫切多個類型和對象的事務(wù)管理Spring的一個關(guān)鍵的組件就是AOP框架,可以是否使用式服務(wù)。最重要的服AOP 提供式企業(yè)服務(wù),特別是為了替代EJB務(wù)是性事務(wù)管理,這個服務(wù)建立在Spring的抽象事物管理之上。允許用戶實現(xiàn)自定義切面,用AOP來完善OOP的使用,可以把Sprin對Spring的一種增強P看作是8.Spring的類有哪些,各作用?BeanFactory:產(chǎn)生一個新的實例,可以實現(xiàn)單例模式BeanWrapper:提供的get及set方法ApplicationContext:提供框架的實現(xiàn),包括BeanFactory的所有功能9.Spring里面如何配置數(shù)據(jù)庫驅(qū)動?使
13、用”.springframework.jdbc.datasource.DriverManagerDataSource”數(shù)據(jù)源來配置數(shù)據(jù)庫驅(qū)動。示例如下:1 23456789.hsqldb.jdbcDriverjdbc:hsqldb:db/appfuseabcabc10111210.Spring里面applicationContext.xml文件能不能改成其他文件名?ContextLoaderListener是一個ServletContextListener, 它在你的web應(yīng)用啟動的時候初始化。缺省情況下, 它會在WEB-INF/applicationContext.xml文件找Spring的
14、配置。 你可以通過定義一個元素名字為”contextConfigLocation”來改變Spring配置文件的 位置。示例如下:1 .springframework.web.cont2ext.ContextLoaderListener34contextConfigLocation5/WEB-INF/xyz.xml678 11.Spring里面如何定義hibernate map?添加hibernate map文件到web/WEB-INF目錄下的applicationContext.xml文件里面。示例如下:1 2alue/appfuse/m/User.hbm.xml/v345 12.Spring
15、如何處理線程并發(fā)問題?Spring使用ThreadLocal解決線程安全問題知道在一般情況下,只有無狀態(tài)的Bean才可以在多線程環(huán)境下共享,在Spring中,絕大部分Bean都可以作用域。就是因為Spring對一些Bean(如為singletonontextHolder、ionSynchronizationManager、ReqTranLocaleContextHolder等)中非線程安全狀態(tài)采用ThreadLocal進行處理,讓它們也成為線程安全的狀態(tài),因為有狀態(tài)的Bean就可以在多線程享了。ThreadLocal和線程同步機制都是為了解決多線程中相同變量的問題。在同步機制中,通過對象的鎖機
16、制保證同一時間只有一個線程訪問變量。這時該變量是多個線程共享的,使用同步機制要求程序慎密地分析什么時候?qū)ψ兞窟M行讀寫,什么時候需要鎖定某個對象,什么時候?qū)^大。對象鎖等繁雜,程序設(shè)計和編寫難度相而ThreadLocal則從另一個角度來解決多線程的并發(fā)。ThreadLocal會為每一個線程提供一個獨立的變量副本,從而隔離了多個線程對數(shù)據(jù)的。因為每一個線程都擁有自己的變量副本,從而也就沒有必要對該變量進行同步了。ThreadLocal提供了線程安全的共享對象,在編寫多線程代碼時,可以把不安全的變量封裝進ThreadLocal。由于ThreadLocal中可以持有任何類型的對象,低版本JDK所提供的
17、get()返回的是Object對象,需要強制類型轉(zhuǎn)換。但JDK5.0通過泛型很好的解決了這個問題,在一定程度地簡化 ThreadLocal的使用。概括起來說,對于多線程資源共享,同步機制采用了“以時間換空間”的方式,而ThreadLocal采用了“以空間換時間”的方式。前者僅提供一份變量,讓不同的線程排隊每一個線程都提供了一份變量,因此可以同時,而后者為而互不影響。13.為什么要有事物行為?14.介紹一下Spring的事物管理事務(wù)就是對一系列的數(shù)據(jù)庫操作(比如多條數(shù)據(jù))進行的提交或回滾操作,如果成功,那么一起成功,如果中間有一條出現(xiàn)異常,那么回滾之前的所有操作。這樣可以防止出現(xiàn)臟數(shù)據(jù),防止數(shù)據(jù)
18、庫數(shù)據(jù)出現(xiàn)問題。開發(fā)中為了避免這種情況一般都會進行事務(wù)管理。Spring中也有自己的事務(wù)管理機制,一般是使用TranionMananger進行管 理,可以通過Spring的注入來完成此功能。spring提供了幾個關(guān)于事務(wù)處理的類:ionDefinition /事務(wù)屬性定義Tranus /代表了當(dāng)前的事務(wù),可以提交,回滾。ionManager這個是spring提供的用于管理TranscationSPlatformTran事務(wù)的基礎(chǔ)接口,其下有一個實現(xiàn)的抽象類使用的事務(wù)管AbstractPlatformTran理類例如 DataSourceTran子類。一般事務(wù)定義步驟:ionManager,io
19、nManager等都是這個類的TranTranTrantrantryionDefinition td = newionDefinition();ionSus ts =ionManager.getTranion(td);/dotransth45mit(ts);6 catch(Exception e)tranionManager.rollback(ts);78 spring提供的事務(wù)管理可以分為兩類:編程式的和式的。編程式的,比較靈活,但是代碼量大,存在重復(fù)的代碼比較多;式的比編程式的更靈活。編程式主要使用tranionTemplate。省略了部分的提交,回滾,一系列的事務(wù)對象定義,需注入事務(wù)管理
20、對象.1 void add()tranTranionTemplate.execute( newionCallback()2pulic Object3nTranion(TranionSus ts)/do sth4567 式:使用TranionProxyFactoryBean:PROPAGATION_REQUIREDPROPAGATION_REQUIRED PROPAGATION_REQUIRED,readOnly圍繞Poxy的動態(tài)能夠自動的提交和回滾事務(wù).springframework.tranctionProxyFactoryBeanion.erceptor.TransaPROPAGATION
21、_REQUIRED支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就新建一個事務(wù)。這是最常見的選擇。 PROPAGATION_SUPPORTS支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就以非事務(wù)方式執(zhí)行。PROPAGATION_MANDATORY支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就拋出異常。PROPAGATION_REQUIRES_NEW新建事務(wù),如果當(dāng)前存在事務(wù),把當(dāng)前事務(wù)掛起。PROPAGATION_NOT_SUPPORTED以非事務(wù)方式執(zhí)行操作,如果當(dāng)前存在事務(wù),就把當(dāng)前事務(wù)掛起。PROPAGATION_NEVER以非事務(wù)方式執(zhí)行,如果當(dāng)前存在事務(wù),則拋出異常。PROPAGATION_NESTED如果當(dāng)前存在事務(wù),
22、則在嵌套事務(wù)內(nèi)執(zhí)行。如果當(dāng)前沒有事務(wù),則進行與 PROPAGATION_REQUIRED類似的操作。15.解釋一下SprinP里面的幾個名詞切面(Aspect):一個關(guān)注點的模塊化,這個關(guān)注點可能會橫切多個對象。事務(wù)管理是J2EE應(yīng)用中一個關(guān)于橫切關(guān)注點的很好的例子。 在SprinP中,切面可以使用通用類(基于模式的風(fēng)格) 或者在普通類中以 Aspect 注解(AspectJ風(fēng)格)來實現(xiàn)。連接點(Joinpo):在程序執(zhí)行過程中某個特定的點,比如某方法調(diào)用的時候或者處理異常的時候。 在SprinP中,一個連接點 總是 代表一個方法的執(zhí)行。 通過一個.aspectj.lang.JoinPo類型的
23、參數(shù)可以使通知(Advice)的主體部分獲得連接點信息。通知(Advice):在切面的某個特定的連接點(Joinpo)上執(zhí)行的動作。通知有各種類型,其中包括“around”、“before”和“after”等通知。 通知的類型將在后面部分進行。許多AOP框架,包括Spring,都是以器做通知模型, 并一個以連接點為中心的器鏈。切入點(Pocut):匹配連接點(Joinpo)的斷言。通知和一個切入點表達式關(guān)聯(lián),并在滿足這個切入點的連接點上運行(例如,當(dāng)執(zhí)行某個特定名稱的方法時)。 切入點表達式如何和連接點匹配是AOP的語法。:Spring缺省使用AspectJ切入點引入(roduction):(也被稱為類型(er-typedeclaration)。額外的方法或者某個類型的字段。Spring允許引入新的接口(以及一個對應(yīng)的實現(xiàn))到任何被代理的對象。例如,你可以使用一個引入來使bean實現(xiàn)IsModified 接口,以便簡化緩存機制。目標(biāo)對象(Object): 被一個或者多個切面(aspect)所通知(advise)的對象。也有人把它叫做 被通知(advised)對象。 既然SprinP是通過運行時實現(xiàn)的,這個對象永遠(yuǎn)是一個 被(proxied) 對象。Proxy): AOP框架創(chuàng)建的對象,用來實現(xiàn)切面 contract)(包括通知方法執(zhí)行等功能)。 在(AOPAOP契約
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小班兒童自我管理能力的提升計劃
- 制定應(yīng)對突發(fā)事件的工作方案計劃
- 財務(wù)發(fā)展實施計劃
- 四年級思想與社會上冊 家鄉(xiāng)的故事教學(xué)實錄1 北師大版
- 員工離職面談的重要性與方法計劃
- 保安工作總結(jié)計劃藥店行業(yè)保安工作的藥品儲存
- 五年級品德與社會下冊 第四單元 我們生活的地球 2 我們的地球村教學(xué)實錄 新人教版
- 《貴州圖南礦業(yè)(集團)有限公司興仁市下山鎮(zhèn)四海煤礦(變更)礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》專家組評審意見
- 《貴陽市白云區(qū)興旺鋁土礦有限公司白云區(qū)沙文鄉(xiāng)興旺鋁土礦(延續(xù))礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》評審意見
- 七年級地理上冊 6.2 聚落的發(fā)展與保護教學(xué)實錄 晉教版
- 2025中國船舶集團限公司招聘高頻重點模擬試卷提升(共500題附帶答案詳解)
- 土壤侵蝕與碳匯-深度研究
- 教師專業(yè)發(fā)展與教學(xué)質(zhì)量的關(guān)系-深度研究
- 2025年哈爾濱鐵道職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點試題含答案解析
- 14《請幫我一下吧》說課稿-2023-2024學(xué)年道德與法治一年級下冊統(tǒng)編版
- 四川省綿陽市2025屆高三第二次診斷性考試思想政治試題(含答案)
- DB3304T 040-2023 安全生產(chǎn)技術(shù)服務(wù)機構(gòu)管理規(guī)范
- DB3204T 1032-2022 安全生產(chǎn)技術(shù)服務(wù)機構(gòu)基本服務(wù)規(guī)范
- 某辦公樓智能化系統(tǒng)技術(shù)規(guī)格說明書
- 咨詢公司顧問聘用協(xié)議書
- 2024年計算機二級WPS考試題庫(共380題含答案)
評論
0/150
提交評論