女人让男人桶爽30分钟,精品一区二区,在线观看 ,久久久久亚洲精品,免费网站看av片,男女啪啪18禁无遮挡激烈

您好!歡迎來(lái)到源碼碼網(wǎng)!

Java開(kāi)發(fā)工程師面試必問(wèn)問(wèn)題spring知識(shí)總結(jié)

  • 軟件教程
  • 來(lái)源:源碼碼網(wǎng)
  • 編輯:admin
  • 時(shí)間:2020-08-08 19:36
  • 閱讀:581

Java開(kāi)發(fā)工程師面試必問(wèn)問(wèn)題spring知識(shí)總結(jié),文章有點(diǎn)長(zhǎng),請(qǐng)耐心看完,掌握這些知識(shí),工資20K隨便拿;


一、談?wù)勀銓?duì)spring的理解

    Spring是一個(gè)開(kāi)源的輕量級(jí)的IoC和AOP容器框架,它為Java 應(yīng)用程序提供了全面的基礎(chǔ)設(shè)施,其目的是簡(jiǎn)化企業(yè)應(yīng)用程序的開(kāi)發(fā),它使得開(kāi)發(fā)者只需要關(guān)心業(yè)務(wù)需求,從而提高開(kāi)發(fā)效率和系統(tǒng)的可維護(hù)性。

二、spring的配置方式

    spring常見(jiàn)的配置方式:基于XML的配置、基于注解的配置、基于Java的配置。

三、請(qǐng)列舉一下spring中有那些重要的模塊

    Spring Core:核心類庫(kù),其spring所有功能都依賴于該類庫(kù),提供IOC服務(wù);

    Spring Context:提供框架式的Bean訪問(wèn)方式,以及企業(yè)級(jí)功能(JNDI、定時(shí)任務(wù)等);

    Spring AOP:AOP服務(wù),提供面向方面的編程實(shí)現(xiàn);

    Spring DAO:對(duì)JDBC的抽象,簡(jiǎn)化了數(shù)據(jù)訪問(wèn)異常的處理;

    Spring ORM:對(duì)現(xiàn)有的ORM框架的支持,例如:對(duì)Hibernate的支持;

    Spring Web:為創(chuàng)建Web應(yīng)用程序提供綜合性支持,例如多方文件上傳;

    Spring MVC:提供面向Web應(yīng)用的Model-View-Controller(即:模型-視圖-控制器)實(shí)現(xiàn);

    Spring Test:提供了對(duì)JUnit和TestNG測(cè)試的支持;

    Spring Aspects:該模塊為與AspectJ的集成提供支持。

四、spring有那些優(yōu)點(diǎn)

    (1)spring采用低侵入式設(shè)計(jì),大大降低了代碼污染;

    (2)spring通過(guò)DI機(jī)制將對(duì)象之間的依賴關(guān)系交由框架處理,減低組件的耦合性;

    (3)Spring AOP技術(shù),將一些通用任務(wù),如安全、事務(wù)、日志、權(quán)限等進(jìn)行集中式管理,從而提供更好的復(fù)用。

    (4)spring對(duì)于主流的應(yīng)用框架提供了很好集成支持。

五、談?wù)勀銓?duì) Spring IoC 和 AOP的理解

     IoC 控制反轉(zhuǎn),是指創(chuàng)建對(duì)象的控制權(quán)的轉(zhuǎn)移,以前創(chuàng)建對(duì)象的主動(dòng)權(quán)和時(shí)機(jī)是由自己把控的,而現(xiàn)在這種權(quán)力轉(zhuǎn)移到Spring容器中,并由容器根據(jù)配置文件去創(chuàng)建實(shí)例和管理各個(gè)實(shí)例之間的依賴關(guān)系,對(duì)象與對(duì)象之間松散耦合,也利于功能的復(fù)用。DI依賴注入,和控制反轉(zhuǎn)是同一個(gè)概念的不同角度的描述,即 應(yīng)用程序在運(yùn)行時(shí)依賴IoC容器來(lái)動(dòng)態(tài)注入對(duì)象需要的外部資源。  

    AOP面向切面編程,可以說(shuō)它是對(duì)面向?qū)ο缶幊蹋ㄗⅲ好嫦驅(qū)ο蠛?jiǎn)稱(OOP): 允許開(kāi)發(fā)者定義縱向的關(guān)系,但并適用于定義橫向的關(guān)系,導(dǎo)致了大量代碼的重復(fù),而不利于各個(gè)模塊的重用)的一種補(bǔ)充用于將那些與業(yè)務(wù)無(wú)關(guān),但卻對(duì)多個(gè)對(duì)象產(chǎn)生影響的公共行為和邏輯,抽取并封裝為一個(gè)可重用的模塊,這個(gè)模塊被命名為“切面”(Aspect),減少系統(tǒng)中的重復(fù)代碼,降低了模塊間的耦合度,同時(shí)提高了系統(tǒng)的可維護(hù)性??捎糜跈?quán)限認(rèn)證、日志、事務(wù)處理。

六、Spring IoC 的注入方式

    注入方式:構(gòu)造器注入、注解注入、setter方法注入

七、BeanFactory和ApplicationContext有什么區(qū)別?

    BeanFactory和ApplicationContext是Spring的兩大核心接口,都可以當(dāng)做Spring的容器。其中ApplicationContext是BeanFactory的子接口。

    (1)BeanFactory:是Spring里面最底層的接口,包含了各種Bean的定義,讀取bean配置文檔,管理bean的加載、實(shí)例化,控制bean的生命周期,維護(hù)bean之間的依賴關(guān)系。ApplicationContext接口作為BeanFactory的派生,除了提供BeanFactory所具有的功能外,還提供了更完整的框架功能:

        ①繼承MessageSource,因此支持國(guó)際化。

        ②統(tǒng)一的資源文件訪問(wèn)方式。
        ③提供在監(jiān)聽(tīng)器中注冊(cè)bean的事件。
        ④同時(shí)加載多個(gè)配置文件。
        ⑤載入多個(gè)(有繼承關(guān)系)上下文 ,使得每一個(gè)上下文都專注于一個(gè)特定的層次,比如應(yīng)用的web層。

  (2)①BeanFactroy采用的是延遲加載形式來(lái)注入Bean的,即只有在使用到某個(gè)Bean時(shí)(調(diào)用getBean()),才對(duì)該Bean進(jìn)行加載實(shí)例化。這樣,我們就不能發(fā)現(xiàn)一些存在的Spring的配置問(wèn)題。如果Bean的某一個(gè)屬性沒(méi)有注入,BeanFacotry加載后,直至第一次使用調(diào)用getBean方法才會(huì)拋出異常。

        ②ApplicationContext,它是在容器啟動(dòng)時(shí),一次性創(chuàng)建了所有的Bean。這樣,在容器啟動(dòng)時(shí),我們就可以發(fā)現(xiàn)Spring中存在的配置錯(cuò)誤,這樣有利于檢查所依賴屬性是否注入。 ApplicationContext啟動(dòng)后預(yù)載入所有的單實(shí)例Bean,通過(guò)預(yù)載入單實(shí)例bean ,確保當(dāng)你需要的時(shí)候,你就不用等待,因?yàn)樗鼈円呀?jīng)創(chuàng)建好了。

        ③相對(duì)于基本的BeanFactory,ApplicationContext 唯一的不足是占用內(nèi)存空間。當(dāng)應(yīng)用程序配置Bean較多時(shí),程序啟動(dòng)較慢。

    (3)BeanFactory通常以編程的方式被創(chuàng)建,ApplicationContext還能以聲明的方式創(chuàng)建,如使用ContextLoader。

(4)BeanFactory和ApplicationContext都支持BeanPostProcessor、BeanFactoryPostProcessor的使用,但兩者之間的區(qū)別是:BeanFactory需要手動(dòng)注冊(cè),而ApplicationContext則是自動(dòng)注冊(cè)。

八、Spring AOP和AspectJ AOP有什么區(qū)別?

    Spring AOP是屬于運(yùn)行時(shí)增強(qiáng),而AspectJ是編譯時(shí)增強(qiáng)。Spring AOP基于代理(Proxying),而AspectJ基于字節(jié)碼操作(Bytecode Manipulation)。
    Spring AOP已經(jīng)集成了AspectJ,AspectJ應(yīng)該算得上是Java生態(tài)系統(tǒng)中最完整的AOP框架了。AspectJ相比于Spring AOP功能更加強(qiáng)大,但是Spring AOP相對(duì)來(lái)說(shuō)更簡(jiǎn)單。
    如果我們的切面比較少,那么兩者性能差異不大。但是,當(dāng)切面太多的話,最好選擇AspectJ,它比SpringAOP快很多。

九、Spring中的bean生命周期

(1)實(shí)例化Bean:
    對(duì)于BeanFactory容器,當(dāng)客戶向容器請(qǐng)求一個(gè)尚未初始化的bean時(shí),或初始化bean的時(shí)候需要注入另一個(gè)尚未初始化的依賴時(shí),容器就會(huì)調(diào)用createBean進(jìn)行實(shí)例化。對(duì)于ApplicationContext容器,當(dāng)容器啟動(dòng)結(jié)束后,通過(guò)獲取BeanDefinition對(duì)象中的信息,實(shí)例化所有的bean。


(2)設(shè)置對(duì)象屬性(依賴注入):
    實(shí)例化后的對(duì)象被封裝在BeanWrapper對(duì)象中,緊接著,Spring根據(jù)BeanDefinition中的信息 以及 通過(guò)BeanWrapper提供的設(shè)置屬性的接口完成依賴注入。


(3)處理Aware接口:
    接著,Spring會(huì)檢測(cè)該對(duì)象是否實(shí)現(xiàn)了xxxAware接口,并將相關(guān)的xxxAware實(shí)例注入給Bean:
        ①如果這個(gè)Bean已經(jīng)實(shí)現(xiàn)了BeanNameAware接口,會(huì)調(diào)用它實(shí)現(xiàn)的setBeanName(String beanId)方法,此處傳遞的就是Spring配置文件中Bean的id值;
        ②如果這個(gè)Bean已經(jīng)實(shí)現(xiàn)了BeanFactoryAware接口,會(huì)調(diào)用它實(shí)現(xiàn)的setBeanFactory()方法,傳遞的是Spring工廠自身。
        ③如果這個(gè)Bean已經(jīng)實(shí)現(xiàn)了ApplicationContextAware接口,會(huì)調(diào)用setApplicationContext(ApplicationContext)方法,傳入Spring上下文;


(4)BeanPostProcessor:
    如果想對(duì)Bean進(jìn)行一些自定義的處理,那么可以讓Bean實(shí)現(xiàn)了BeanPostProcessor接口,那將會(huì)調(diào)用postProcessBeforeInitialization(Object obj, String s)方法。


(5)InitializingBean 與 init-method:
       如果Bean在Spring配置文件中配置了 init-method 屬性,則會(huì)自動(dòng)調(diào)用其配置的初始化方法。


(6)如果這個(gè)Bean實(shí)現(xiàn)了BeanPostProcessor接口,將會(huì)調(diào)用postProcessAfterInitialization(Object obj, String s)方法;由于這個(gè)方法是在Bean初始化結(jié)束時(shí)調(diào)用的,所以可以被應(yīng)用于內(nèi)存或緩存技術(shù);
以上幾個(gè)步驟完成后,Bean就已經(jīng)被正確創(chuàng)建了,之后就可以使用這個(gè)Bean了。


(7)DisposableBean:
    當(dāng)Bean不再需要時(shí),會(huì)經(jīng)過(guò)清理階段,如果Bean實(shí)現(xiàn)了DisposableBean這個(gè)接口,會(huì)調(diào)用其實(shí)現(xiàn)的destroy()方法;


(8)destroy-method:
    最后,如果這個(gè)Bean的Spring配置中配置了destroy-method屬性,會(huì)自動(dòng)調(diào)用其配置的銷毀方法。

生命周期如下圖所示:


spring生命周期


十、Spring MVC的工作原理

流程說(shuō)明:
(1).客戶端(瀏覽器)發(fā)送請(qǐng)求,直接請(qǐng)求到DispatcherServlet。
(2).DispatcherServlet根據(jù)請(qǐng)求信息調(diào)用HandlerMapping,解析請(qǐng)求對(duì)應(yīng)的Handler。
(3).解析到對(duì)應(yīng)的Handler(也就是我們平常說(shuō)的Controller控制器)。
(4).HandlerAdapter會(huì)根據(jù)Handler來(lái)調(diào)用真正的處理器來(lái)處理請(qǐng)求和執(zhí)行相對(duì)應(yīng)的業(yè)務(wù)邏輯。
(5).處理器處理完業(yè)務(wù)后,會(huì)返回一個(gè)ModelAndView對(duì)象,Model是返回的數(shù)據(jù)對(duì)象,View是邏輯上的View。
(6).ViewResolver會(huì)根據(jù)邏輯View去查找實(shí)際的View。
(7).DispatcherServlet把返回的Model傳給View(視圖渲染)。
(8).把View返回給請(qǐng)求者(瀏覽器)。

如下圖所示:

spring生命周期


十一、Spring框架中用到了哪些設(shè)計(jì)模式

(1).工廠模式:Spring 中BeanFactory就是簡(jiǎn)單工廠模式的體現(xiàn),用來(lái)創(chuàng)建bean對(duì)象。
(2).代理模式:Spring AOP功能的實(shí)現(xiàn)用到了JDK的動(dòng)態(tài)代理和CGLIB字節(jié)碼生成技術(shù)。
(3).單例模式:Spring中的bean默認(rèn)都是單例的。
(4).模板方法:Spring中的jdbcTemplate、hibernateTemplate等以Template結(jié)尾的對(duì)數(shù)據(jù)庫(kù)操作的類,它們就使用到了模板模式,主要用來(lái)解決代碼重復(fù)。
(5).包裝器模式:我們的項(xiàng)目需要連接多個(gè)數(shù)據(jù)庫(kù),而且不同的客戶在每次訪問(wèn)中根據(jù)需要會(huì)去訪問(wèn)不同的數(shù)據(jù)庫(kù)。這種模式讓我們可以根據(jù)客戶的需求能夠動(dòng)態(tài)切換不同的數(shù)據(jù)源。
(6).觀察者模式:Spring事件驅(qū)動(dòng)模型就是觀察者模式很經(jīng)典的一個(gè)應(yīng)用。
(7).適配器模式:Spring AOP的增強(qiáng)或通知(Advice)使用到了適配器模式、Spring MVC中也是用到了適配器模式適配Controller

十二、spring中bean的作用域

    Spring容器中的bean可以分為5個(gè)范圍:

    (1). singleton:默認(rèn),每個(gè)容器中只有一個(gè)bean的實(shí)例,單例的模式由BeanFactory自身來(lái)維護(hù)。
    (2).prototype:為每一個(gè)bean請(qǐng)求提供一個(gè)實(shí)例。
    (3).request:為每一個(gè)網(wǎng)絡(luò)請(qǐng)求創(chuàng)建一個(gè)實(shí)例,在請(qǐng)求完成以后,bean會(huì)失效并被垃圾回收器回收。
    (4).session:與request范圍類似,確保每個(gè)session中有一個(gè)bean的實(shí)例,在session過(guò)期后,bean會(huì)隨之失效。
    (5).global-session:全局作用域,global-session和Portlet應(yīng)用相關(guān)。當(dāng)你的應(yīng)用部署在Portlet容器中工作時(shí),它包含很多portlet。如果你想要聲明讓所有的portlet共用全局的存儲(chǔ)變量的話,那么這全局變量需要存儲(chǔ)在global-session中。全局作用域與Servlet中的session作用域效果相同。

十三、Spring基于xml注入bean的幾種方式

    (1)Set方法注入;

    (2)構(gòu)造器注入:①通過(guò)index設(shè)置參數(shù)的位置;②通過(guò)type設(shè)置參數(shù)類型;

    (3)靜態(tài)工廠注入;

    (4)實(shí)例工廠

十四、Spring框架xml配置中有哪幾種自動(dòng)裝配

    在Spring框架xml配置中共有5種自動(dòng)裝配:

    (1)no:默認(rèn)的方式是不進(jìn)行自動(dòng)裝配的,通過(guò)手工設(shè)置ref屬性來(lái)進(jìn)行裝配bean。

    (2)byName:通過(guò)bean的名稱進(jìn)行自動(dòng)裝配,如果一個(gè)bean的 property 與另一bean 的name 相同,就進(jìn)行自動(dòng)裝配。 

    (3)byType:通過(guò)參數(shù)的數(shù)據(jù)類型進(jìn)行自動(dòng)裝配。

    (4)constructor:利用構(gòu)造函數(shù)進(jìn)行裝配,并且構(gòu)造函數(shù)的參數(shù)通過(guò)byType進(jìn)行裝配。

    (5)autodetect:自動(dòng)探測(cè),如果有構(gòu)造方法,通過(guò) construct的方式自動(dòng)裝配,否則使用 byType的方式自動(dòng)裝配。

十五、spring中bean的常用注解有哪些

    (1).@Component注解。通用的注解,可標(biāo)注任意類為Spring組件。如果一個(gè)Bean不知道屬于哪一個(gè)層,可以使用@Component注解標(biāo)注。

    (2).@Repository注解。對(duì)應(yīng)持久層,即Dao層,主要用于數(shù)據(jù)庫(kù)相關(guān)操作。

    (3).@Service注解。對(duì)應(yīng)服務(wù)層,即Service層,主要涉及一些復(fù)雜的邏輯,需要用到Dao層(注入)。

    (4).@Controller注解。對(duì)應(yīng)Spring MVC的控制層,即Controller層,主要用于接受用戶請(qǐng)求并調(diào)用Service層的方法返回?cái)?shù)據(jù)給前端頁(yè)面。


特別聲明:
1、如無(wú)特殊說(shuō)明,內(nèi)容均為本站原創(chuàng)發(fā)布,轉(zhuǎn)載請(qǐng)注明出處;
2、部分轉(zhuǎn)載文章已注明出處,轉(zhuǎn)載目的為學(xué)習(xí)和交流,如有侵犯,請(qǐng)聯(lián)系客服刪除;
3、編輯非《源碼碼網(wǎng)》的文章均由用戶編輯發(fā)布,不代表本站立場(chǎng),如涉及侵犯,請(qǐng)聯(lián)系刪除;
全部評(píng)論(0)
推薦閱讀
  • CSS 媒體查詢(@media)寬度范圍設(shè)置建議
  • CSS 媒體查詢(@media)寬度范圍設(shè)置建議
  • 語(yǔ)法正確性:代碼使用現(xiàn)代范圍查詢語(yǔ)法(width>=1200pxandwidth<1400px),在支持該語(yǔ)法的瀏覽器(如Chrome104+、Firefox63+、Safari15.4+)中有效。邏輯正確性:當(dāng)視口寬度在1200px(含)至1400px(不含)之間時(shí),body的padding-top會(huì)設(shè)置為4px,符合用戶需求。兼容性建議:傳統(tǒng)寫(xiě)法:為兼容舊版瀏覽器,建議改用:@media?(w
  • 源碼教程
  • 來(lái)源:源碼碼網(wǎng)
  • 編輯:源碼碼網(wǎng)
  • 時(shí)間:2025-05-06 21:55
  • 閱讀:82
  • VS Code配置Vue自動(dòng)補(bǔ)全代碼教程
  • VS Code配置Vue自動(dòng)補(bǔ)全代碼教程
  • 在VSCode中配置Vue開(kāi)發(fā)的自動(dòng)補(bǔ)全代碼可以通過(guò)以下步驟實(shí)現(xiàn),以提高開(kāi)發(fā)效率:1.安裝必要插件Volar(推薦用于Vue3)針對(duì)Vue3和語(yǔ)法,提供更強(qiáng)大的支持。Vetur(適用于Vue2)若項(xiàng)目使用Vue2,安裝Vetur并禁用Volar以避免沖突。VueVSCodeSnippets提供常用代碼片段(如v-for,?v-model等)。2.配置VSCode設(shè)
  • 源碼教程
  • 來(lái)源:源碼碼網(wǎng)
  • 編輯:源碼碼網(wǎng)
  • 時(shí)間:2025-04-21 21:35
  • 閱讀:190
  • 中文域名有價(jià)值嗎?他的優(yōu)缺點(diǎn)是什么?
  • 中文域名有價(jià)值嗎?他的優(yōu)缺點(diǎn)是什么?
  • 中文域名(如“例子.中國(guó)”或“news.新華網(wǎng)”)作為互聯(lián)網(wǎng)本地化的重要體現(xiàn),近年來(lái)在特定場(chǎng)景下展現(xiàn)了獨(dú)特的價(jià)值,但也存在爭(zhēng)議和局限性。以下從多個(gè)角度分析其價(jià)值與挑戰(zhàn):1.核心價(jià)值點(diǎn)(1)用戶友好性與品牌本土化降低記憶門檻:對(duì)中文用戶而言,母語(yǔ)域名更直觀易記,尤其適合面向非英語(yǔ)用戶的中小企業(yè)、地方機(jī)構(gòu)或中老年群體。例如,“新華網(wǎng).中國(guó)”比“xinhuanet.com”更容易被普通用戶記住。強(qiáng)化品牌標(biāo)識(shí):中文域名可直接體現(xiàn)品牌名稱(如“
  • 行業(yè)資訊
  • 來(lái)源:源碼碼網(wǎng)
  • 編輯:源碼碼網(wǎng)
  • 時(shí)間:2025-04-19 14:08
  • 閱讀:179
聯(lián)系客服
源碼代售 源碼咨詢 素材咨詢 聯(lián)系客服
029-84538663
手機(jī)版

掃一掃進(jìn)手機(jī)版
返回頂部