最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

鎖屏面試題百日百刷-Spring篇(四)

2021-07-06 22:06 作者:zjlala96  | 我要投稿

????????

鎖屏面試題


????????鎖屏面試題百日百刷,每個工作日堅持更新面試題。鎖屏面試題app、小程序現(xiàn)已上線,官網(wǎng)地址:https://www.demosoftware.cc/#/introductionPage。已收錄了每日更新的面試題的所有內(nèi)容,還包含特色的解鎖屏幕復習面試題、每日編程題目郵件推送等功能。讓你在面試中先人一步,吊打面試官!接下來的是今日的面試題:

1、在 Spring 中如何注入一個 java 集合?

Spring 提供以下幾種集合的配置元素:

1.<list>類型用于注入一列值,允許有相同的值。

<!-- 給數(shù)組注入值 -->

???????<property name="empName">

???????????<list>

???????????????<value>小米</value>

???????????????<value>小明</value>

???????????????<value>小四</value>

???????????</list>

???????</property>

???????<!-- 給list注入值 可以有相同的多個對象 ?-->

???????<property name="empList">

???????????<list>

???????????????<ref bean="emp1" />

???????????????<ref bean="emp2"/>

???????????</list>

???????</property>

2.<set> 類型用于注入一組值,不允許有相同的值。

<!-- 給set注入值 不能有相同的對象 -->

???????<property name="empSets">

???????????<set>

???????????????<ref bean="emp1" />

???????????????<ref bean="emp2"/>

???????????</set>

???????</property>

3.?<map> 類型用于注入一組鍵值對,鍵和值都可以為任意類型。

? ???<!-- 給map注入值 只要map中的key值不一樣就可以裝配value -->

???????<property name="empMap">

???????????<map>

???????????????<entry key="1" value-ref="emp1" />

???????????????<entry key="2" value-ref="emp2" />

???????????</map>

???????</property>

4.<props>類型用于注入一組鍵值對,鍵和值都只能為 String 類型。

<!-- 給屬性集合配置 -->

???????<property name="pp">

???????????<props>

???????????????<prop key="pp1">hello</prop>

???????????????<prop key="pp2">world</prop>

???????????</props>

???????</property>

2、什么是 bean 的自動裝配?

~無須在 Spring 配置文件中描述 javaBean 之間的依賴關(guān)系(如配置<property>、<constructor-arg>)。IOC 容器會自動建立 javabean 之間的關(guān)聯(lián)關(guān)系。

~Spring IOC容器可以自動裝配Bean,需要做的僅僅實在<bean>的autowire屬性里指定自動裝配的模式。

~Spring2.5開始支持注解@Autowired和@Resource來自動裝配

3、解釋不同方式的自動裝配?

有五種自動裝配的方式,可以用來指導 Spring 容器用自動裝配方式來進行依賴注入。

1)no:默認的方式是不進行自動裝配,通過顯式設置 ref 屬性來進行裝配。

2)byName:通過參數(shù)名自動裝配,Spring 容器在配置文件中發(fā)現(xiàn) bean 的 autowire 屬性被設置成 byname,之后容器試圖匹配、裝配和該 bean 的屬性具有相同名字的 bean。

<bean id="cat" class="pojo.Cat"/>

<bean id="dog" class="pojo.Dog"/>

<bean id="people" class="pojo.People" autowire="byName">

????<property name="name" value="zj"/>

</bean>

3)byType::通過參數(shù)類型自動裝配,Spring 容器在配置文件中發(fā)現(xiàn) bean 的 autowire 屬性被設置成 byType,之后容器試圖匹配、裝配和該 bean 的屬性具有相同類型的 bean。如果有多個 bean 符合條件,則拋出錯誤。

<bean id="cat" class="pojo.Cat"/>

<bean id="dog" class="pojo.Dog"/>

<bean id="people" class="pojo.People" autowire="byType">

????<property name="name" value="zj"/>

</bean>

4)constructor:這個方式類似于 byType, 但是要提供給構(gòu)造器參數(shù),如果沒有確定的帶參數(shù)的構(gòu)造器參數(shù)類型,將會拋出異常。

5)autodetect:首先嘗試使用 constructor 來自動裝配,如果無法工作,則使用 byType 方式。

4、@Autowired和@Resource異同?

~@Autowired和@Resource的相同點:

都是用于自動裝配的,都可以放在屬性字段和set方法上

~@Autowired和@Resource的區(qū)別:

2.@Autowired為Spring提供的注解,@Resource為java提供的注解

3.@Autowired 默認通過 byType 的方式實現(xiàn),如果有多個對象,則通過 byName 查找,如果都找不到,則報錯;此時可以用@Qualifier指定唯一的bean對象

4.@Resource 默認通過 byName 的方式實現(xiàn),如果找不到名字, 則通過 byType 實現(xiàn)!如果兩個都找不到,就會報錯

5、什么是基于 Java 的 Spring 注解配置? 給一些注解的例子

基于 Java 的配置,允許你在少量的 Java 注解的幫助下,進行你的大部分 Spring 配置而非通過 XML 文件。以@Configuration 注解為例,它用來標記類可以當做一個 bean 的定義,被 Spring IOC 容器使用。另一個例子是@Bean 注解,它表示此方法將要返回一個對象,作為一個 bean 注冊進 Spring 應用上下文。

6、簡單解釋一下 spring 的 AOP

AOP(Aspect Oriented Programming),即面向切面編程,可以說是 OOP(Object Oriented Programming面向?qū)ο缶幊蹋┑难a充和完善。OOP 引入封裝、繼承、多態(tài)等概念來建立一種對象層次結(jié)構(gòu),用于模擬公共行為的一個集合。不過 OOP 允許開發(fā)者定義縱向的關(guān)系,但并不適合定義橫向的關(guān)系,例如日志功能。日志代碼往往橫向地散布在所有對象層次中,而與它對應的對象的核心功能毫無關(guān)系對于其他類型的代碼,如安全性、異常處理和透明的持續(xù)性也都是如此,這種散布在各處的無關(guān)的代碼被稱為橫切(cross cutting),在 OOP 設計中,它導致了大量代碼的重復,而不利于各個模塊的重用。

AOP 技術(shù)恰恰相反,它利用一種稱為"橫切"的技術(shù),剖解開封裝的對象內(nèi)部,并將那些影響了多個類的公共行為封裝到一個可重用模塊,并將其命名為"Aspect",即切面。所謂"切面",簡單說就是那些與業(yè)務無關(guān),卻為業(yè)務模塊所共同調(diào)用的邏輯或責任封裝起來,便于減少系統(tǒng)的重復代碼,降低模塊之間的耦合度,并有利于未來的可操作性和可維護性。

使用"橫切"技術(shù),AOP 把軟件系統(tǒng)分為兩個部分:核心關(guān)注點和橫切關(guān)注點。業(yè)務處理的主要流程是核心關(guān)注點,與之關(guān)系不大的部分是橫切關(guān)注點。橫切關(guān)注點的一個特點是,他們經(jīng)常發(fā)生在核心關(guān)注點的多處,而各處基本相似,比如權(quán)限認證、日志、事物。AOP 的作用在于分離系統(tǒng)中的各種關(guān)注點,將核心關(guān)注點和橫切關(guān)注點分離開來。

AOP 核心就是切面,它將多個類的通用行為封裝成可重用的模塊,該模塊含有一組 API 提供橫切功能。比如,一個日志模塊可以被稱作日志的 AOP 切面。根據(jù)需求的不同,一個應用程序可以有若干切面。在 Spring AOP 中,切面通過帶有@Aspect 注解的類實現(xiàn)。

7、在 Spring AOP 中,關(guān)注點和橫切關(guān)注的區(qū)別是什么?

關(guān)注點是應用中一個模塊的行為,一個關(guān)注點可能會被定義成一個我們想實現(xiàn)的一個功能。橫切關(guān)注點是一個關(guān)注點,此關(guān)注點是整個應用都會使用的功能,并影響整個應用,比如日志,安全和數(shù)據(jù)傳輸,幾乎應用的每個模塊都需要的功能。因此這些都屬于橫切關(guān)注點。

8、什么是連接點?

被攔截到的點,因為 Spring 只支持方法類型的連接點,所以在 Spring 中連接點指的就是被攔截到的方法,實際上連接點還可以是字段或者構(gòu)造器。

9、Spring 的通知是什么?有哪幾種類型?

通知是個在方法執(zhí)行前或執(zhí)行后要做的動作,實際上是程序執(zhí)行時要通過 SpringAOP 框架觸發(fā)的代碼段。

Spring 切面可以應用五種類型的通知:

1)before:前置通知,在一個方法執(zhí)行前被調(diào)用。

2)after: 在方法執(zhí)行之后調(diào)用的通知,無論方法執(zhí)行是否成功。

3)after-returning: 僅當方法成功完成后執(zhí)行的通知。

4)after-throwing: 在方法拋出異常退出時執(zhí)行的通知。

5)around: 在方法執(zhí)行之前和之后調(diào)用的通知。

10、什么是切點?

切入點是一個或一組連接點,通知將在這些位置執(zhí)行??梢酝ㄟ^表達式或匹配的方式指明切入點。

11、什么是目標對象?

被一個或者多個切面所通知的對象。它通常是一個代理對象。也指被通知(advised)對象。

12、什么是代理?

代理是通知目標對象后創(chuàng)建的對象。從客戶端的角度看,代理對象和目標對象是一樣的。

13、什么是織入?什么是織入應用的不同點?

織入是將切面和到其他應用類型或?qū)ο筮B接或創(chuàng)建一個被通知對象的過程。織入可以在編譯時,加載時,或運行時完成。

13、AOP中的一些常用術(shù)語和解釋?

通知(Advice): AOP 框架中的增強處理。通知描述了切面何時執(zhí)行以及如何執(zhí)行增強處理。

連接點(join point): 連接點表示應用執(zhí)行過程中能夠插入切面的一個點,這個點可以是方法的調(diào)用、異常的拋出。在 Spring AOP 中,連接點總是方法的調(diào)用。

切點(PointCut): 可以插入增強處理的連接點。

切面(Aspect): 切面是通知和切點的結(jié)合。

引入(Introduction):引入允許我們向現(xiàn)有的類添加新的方法或者屬性。

織入(Weaving): 將增強處理添加到目標對象中,并創(chuàng)建一個被增強的對象,這個過程就是織入。

更多面試題可關(guān)注"demo鎖屏面試題"公眾號通過小程序或app獲取面試題和學習資源

掃碼關(guān)注



鎖屏面試題百日百刷-Spring篇(四)的評論 (共 條)

分享到微博請遵守國家法律
兴化市| 郓城县| 黎城县| 玉溪市| 镇巴县| 尉氏县| 荔浦县| 邵阳县| 铁岭县| 汝南县| 江都市| 固安县| 文山县| 韶关市| 金山区| 洪湖市| 浙江省| 禹城市| 崇州市| 阳新县| 商河县| 东丽区| 祁东县| 边坝县| 嘉兴市| 平乐县| 涟水县| 长顺县| 肥乡县| 金寨县| 宁国市| 湘潭县| 盐津县| 宜兰县| 溧阳市| 通化县| 蓝山县| 青海省| 繁昌县| 溧水县| 肇源县|