s面試問(wèn)題t推薦收藏必備_第1頁(yè)
s面試問(wèn)題t推薦收藏必備_第2頁(yè)
s面試問(wèn)題t推薦收藏必備_第3頁(yè)
s面試問(wèn)題t推薦收藏必備_第4頁(yè)
s面試問(wèn)題t推薦收藏必備_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Spring面試問(wèn)題TOP 50(干貨推薦收藏必備)1、一般問(wèn)題1.1.不同版本的Spring Framework有哪些主要功能?1.2.什么是 Spring Framework?Spring 是一個(gè)開(kāi)源應(yīng)用框架,旨在降低應(yīng)用程序開(kāi)發(fā)的復(fù)雜度。§它是輕量級(jí)、松散耦合的。§它具有分層體系結(jié)構(gòu),用戶選擇組件,同時(shí)還為 J2EE 應(yīng)用程序開(kāi)發(fā)§提供了一個(gè)有凝聚力的框架。Spring Framework 現(xiàn)在幾乎已成為 Java Web 開(kāi)發(fā)的標(biāo)配框架。那么,作為 Java 程序員,你對(duì) Spring 的主要技術(shù)點(diǎn)又掌握了多少呢?不妨用本文的問(wèn)題來(lái)檢測(cè)一下。它可以集成其他

2、框架,如 Structs、Hibernate、EJB 等,所以又稱為框§架的框架。1.3. 列舉 Spring Framework 的優(yōu)點(diǎn)。由于 Spring Frameworks 的分層架構(gòu),用戶可以自由選擇需要的§組件。Spring Framework 支持 POJO(Plain Old Java Object) 編程,從而具§備持續(xù)集成和可測(cè)試性。由于依賴注入和反轉(zhuǎn),JDBC 得以簡(jiǎn)化。§它是開(kāi)源的。§1.4. Spring Framework 有哪些不同的功能?輕量級(jí) - Spring 在代碼量和方面都很輕便。§IOC -反轉(zhuǎn)

3、§AOP - 面向切面編程可以將應(yīng)用業(yè)務(wù)邏輯和系統(tǒng)服務(wù)分離,以實(shí)現(xiàn)§聚。容器 - Spring 負(fù)責(zé)創(chuàng)建和管理對(duì)象(Bean)的生命周期和配置。§MVC - 對(duì) web 應(yīng)用提供了高度可配置性,其他框架的集成也十分方§便。事務(wù)管理 - 提供了用于事務(wù)管理的通用抽象層。Spring 的事務(wù)支持也可§用于容器較少的環(huán)境。JDBC 異常 - Spring 的 JDBC 抽象層提供了一個(gè)異常層次結(jié)構(gòu),簡(jiǎn)化§了錯(cuò)誤處理策略。1.5. Spring Framework中有多少個(gè)模塊,它們分別是什么?Spring容器 該層基本上是 Spring F

4、ramework 的。它包含§以下模塊:Spring Core§Spring Bean§SpEL (Spring Expression Language)§Spring Context§數(shù)據(jù)/集成 該層提供與數(shù)據(jù)庫(kù)交互的支持。它包含以下模塊:§JDBC (Java DataBase Connectivity)§ORM (Object Relational Mapping)§OXM (Object XML Mappers)§JMS (Java Messaging Service)§Transact

5、ion§Web 該層提供了創(chuàng)建 Web 應(yīng)用程序的支持。它包含以下模塊:§Web§WebServlet§WebSocket§WebPortlet§AOP 該層支持面向切面編程§Instrumentation 該層為類檢測(cè)和類加載器實(shí)現(xiàn)提供支持。§Test 該層為使用 JUnit 和 TestNG 進(jìn)試提供支持。§幾個(gè)雜項(xiàng)模塊:§Messaging 該模塊為 STOMP 提供支持。它還支持注解編程模型,§該模型用于從 WebSocket 客戶端路由和處理 STOMP 消息。Aspects

6、 該模塊為與 AspectJ 的集成提供支持。§1.6. 什么是 Spring 配置文件?Spring 配置文件是 XML 文件。該文件主要包含類信息。它描述了這些類是如何配置以及相互引入的。但是,XML 配置文件冗長(zhǎng)且更加干凈。如果沒(méi)有正確和編寫(xiě),那么在大項(xiàng)目中管理變得非常。1.7. Spring 應(yīng)用程序有哪些不同組件?Spring 應(yīng)用一般有以下組件:接口 - 定義功能。§Bean 類 - 它包含屬性,setter 和 getter 方法,函數(shù)等。§Spring 面向切面編程(AOP) - 提供面向切面編程的功能。§Bean 配置文件 - 包含類的

7、信息以及如何配置它們。§用戶程序 - 它使用接口。§1.8. 使用 Spring 有哪些方式?使用 Spring 有以下方式:作為一個(gè)成Spring Web 應(yīng)用程序。§作為第Web 框架,使用 Spring Frameworks 中間層。§用于使用。§作為企業(yè)級(jí) Java Bean,它可以包裝現(xiàn)有的 POJO(Plain OldJava§Objects)。2、依賴注入(Ioc)2.1. 什么是 Spring IOC 容器?Spring 框架的是 Spring 容器。容器創(chuàng)建對(duì)象,將它們裝配在一起,配置它們并管理它們的完整生命周期。S

8、pring 容器使用依賴注入來(lái)管理組成應(yīng)用程序的組件。容器通過(guò)提供的配置元數(shù)據(jù)來(lái)接收對(duì)象進(jìn)行實(shí)例化,配置和組裝的指令。該元數(shù)據(jù)可以通過(guò)XML,Java注解或Java代碼提供。2.2. 什么是依賴注入?在依賴注入中,您不必創(chuàng)建對(duì)象,但必須描述如何創(chuàng)建它們。您不是直接在代碼中將組件和服務(wù)連接在一起,而是描述配置文件中哪些組件需要哪些服務(wù)。由IoC 容器將它們裝配在一起。2.3. 可以通過(guò)多少種方式完成依賴注入?通常,依賴注入可以通過(guò)三種方式完成,即:構(gòu)造函數(shù)注入§setter 注入§接口注入§在 Spring Framework 中,僅使用構(gòu)造函數(shù)和setter注入。

9、2.4. 區(qū)分構(gòu)造函數(shù)注入和 setter 注入。構(gòu)造函數(shù)注入 setter 注入沒(méi)有部分注入有部分注入覆蓋 setter 屬性會(huì)覆蓋 setter 屬性任意修改都會(huì)創(chuàng)建一個(gè)新實(shí)例任意修改創(chuàng)建一個(gè)新實(shí)例適用于設(shè)置很多屬性適用于設(shè)置少量屬性2.5. spring 中有多少種 IOC 容器?BeanFactory - BeanFactory 就像一個(gè)包含 bean 集合的工廠類。它會(huì)§在客戶端要求時(shí)實(shí)例化 bean。ApplicationContext - ApplicationContext 接口擴(kuò)展了 BeanFactory§接口。它在 BeanFactory 基礎(chǔ)上提供了

10、一些額外的功能。2.6. 區(qū)分 BeanFactory 和 ApplicationContext。BeanFactoryApplicationContext 它使用懶加載它使用即時(shí)加載它使用語(yǔ)法顯式提供對(duì)象它創(chuàng)建和管理對(duì)象不支際化支際化不支持基于依賴的注解支持基于依賴的注解2.7. 列舉 IoC 的一些好處。IoC 的一些好處是:它將最小化應(yīng)用程序中的代碼量。§它將使您的應(yīng)用程序易于測(cè)試,因?yàn)樗恍枰獑卧獪y(cè)試用例中的任何單例§或 JNDI 查找機(jī)制。它以最小的影響和最少的侵入機(jī)制促進(jìn)松耦合。§它支持即時(shí)的實(shí)例化和延遲加載服務(wù)。§2.8. Spring I

11、oC 的實(shí)現(xiàn)機(jī)制。Spring 中的 IoC 的實(shí)現(xiàn)原理就是工廠模式加反射機(jī)制。示例:interface Fruit public abstract void eat();class Apple implements Fruit public void eat()System.out.println("Apple");class Orange implements Fruit public void eat()System.out.println("Orange");class Factory public static Fruit getInstanc

12、e(String ClassName) Fruit f=null;try f=(Fruit)Class.forName(ClassName).newInstance(); catch (Exception e) e.printStackTrace();return f;class Client public static void main(String a) Fruit f=Factory.getInstance("io.dunwu.spring.Apple");if(f!=null)f.eat();3. Beans3.1. 什么是spring bean?它們是用戶應(yīng)用程

13、序主干的對(duì)象。§Bean 由 Spring IoC 容器管理。§它們由 Spring IoC 容器實(shí)例化,配置,裝配和管理。§Bean 是基于用戶提供給容器的配置元數(shù)據(jù)創(chuàng)建。§3.2. spring 提供了哪些配置方式?基于 xml 配置§bean 所需的依賴項(xiàng)和服務(wù)在 XML 格式的配置文件中指定。這些配置文件通常包含許多 bean特定于應(yīng)用程序的配置選項(xiàng)。它們通常以 bean開(kāi)頭。例如:<bean id="studentbean" class="reka.firstSpring.Studen

14、tBean"><property name="name" value="Edureka"></property></bean>基于注解配置§您可以通過(guò)在相關(guān)的類,方法或字段上使用注解,將 bean 配置為組件類本身,而不是使用 XML 來(lái)描述 bean 裝配。默認(rèn)情況下,Spring 容器中未打開(kāi)注解裝配。因此,您需要在使用它之前在Spring配置文件中啟用它。例如:<beans><context:annotation-config/><!- bean defin

15、itions go here -></beans>基于 Java API 配置§Spring 的 Java 配置是通過(guò)使用 Bean和Configuration 來(lái)實(shí)現(xiàn)。Bean 注解扮演與 <bean /> 元素相同的。1.Configuration 類通過(guò)簡(jiǎn)單地調(diào)用同一個(gè)類中的其他 Bean方2.法來(lái)定義 bean 間依賴關(guān)系。例如:Configurationpublic class StudentConfig Beanpublic StudentBean myStudent() return new StudentBean();3.3. sprin

16、g 支持集中 bean scope?Spring bean 支持 5 種 scope:Singleton - 每個(gè) Spring IoC 容器僅有一個(gè)單實(shí)例。§Prototype - 每次請(qǐng)求都會(huì)產(chǎn)生一個(gè)新的實(shí)例。§Request - 每一次 HTTP 請(qǐng)求都會(huì)產(chǎn)生一個(gè)新的實(shí)例,并且該 bean§僅在當(dāng)前 HTTP 請(qǐng)求內(nèi)有效。Session - 每一次 HTTP 請(qǐng)求都會(huì)產(chǎn)生一個(gè)新的 bean,同時(shí)該 bean§僅在當(dāng)前 HTTP session 內(nèi)有效。Global-session - 類似于標(biāo)準(zhǔn)的 HTTP Session 作用域,不過(guò)它僅僅在&#

17、167;基于 portlet 的 web 應(yīng)用中才有意義。Portlet 規(guī)范定義了全局 Session 的概念,它被所有某個(gè) portlet web 應(yīng)用的各種不同的 portlet 所共享。在global session 作用域中定義的 bean 被限定于全局 portlet Session 的生命周期范圍內(nèi)。如果你在 web 中使用 global session 作用域來(lái)標(biāo)識(shí) bean,那么 web 會(huì)自動(dòng)當(dāng)成 session 類型來(lái)使用。僅當(dāng)用戶使用支持 Web 的 ApplicationContext 時(shí),最后三個(gè)才可用。3.4. spring bean 容器的生命周期是什么樣的?s

18、pring bean 容器的生命周期流程如下:Spring 容器根據(jù)配置中的 bean 定義中實(shí)例化 bean。1.Spring 使用依賴注入填充所有屬性,如 bean 中所定義的配置。2.如果 bean 實(shí)現(xiàn) BeanNameAware 接口,則工廠通過(guò)傳遞 bean的3.ID 來(lái)調(diào)用 setBeanName()。如果 bean 實(shí)現(xiàn) BeanFactoryAware 接口,工廠通過(guò)傳遞自身的實(shí)例4.來(lái)調(diào)用 setBeanFactory()。如果存在與bean 關(guān)聯(lián)的任何BeanPostProcessors , 則調(diào)用5.preProcessBeforeInitialization() 方法

19、。如果為 bean 指定了 init 方法(<bean> 的 init-method 屬性),那6.調(diào)用它。最后,如果存在與 bean 關(guān)聯(lián)的任何 BeanPostProcessors,則將調(diào)用7.postProcessAfterInitialization() 方法。如果 bean 實(shí)現(xiàn) DisposableBean 接口,當(dāng) spring 容器關(guān)閉時(shí),會(huì)調(diào)8.用 destory()。如果為 bean 指定了 destroy 方法(<bean> 的 destroy-method 屬9.性),那調(diào)用它。3.5. 什么是 spring 的內(nèi)部 bean?只有將 bean

20、用作另一個(gè) bean 的屬性時(shí),才能將 bean為內(nèi)部 bean。為了定義 bean,Spring 的基于 XML 的配置元數(shù)據(jù)在 <property> 或<constructor-arg> 中提供了 <bean> 元素的使用。內(nèi)部 bean 總是的,它們總是作為原型。例如,假設(shè)我們有一個(gè) Student 類,其中了類。這里只創(chuàng)建一個(gè)類實(shí)例并在 Student 中使用它。Student.javapublic class Student private;/Setters and Getterspublic classprivate String name;pr

21、ivate String address;/Setters and Gettersbean.xml<bean id=“StudentBean" class="reka.Student"><property name=""><!-This is inner bean -><bean class="reka."><property name="name" value=“Scott"></property&g

22、t;<property name="address" value=“Bangalore"></property></bean></property></bean>3.6. 什么是 spring 裝配當(dāng) bean 在 Spring 容器中組合在一起時(shí),它被稱為裝配或 bean 裝配。Spring 容器需要知道需要什么 bean 以及容器應(yīng)該如何使用依賴注bean 綁定在一起,同時(shí)裝配 bean。3.7. 自動(dòng)裝配有哪些方式?Spring 容器能夠自動(dòng)裝配 bean。也就是說(shuō),可以通過(guò)檢查 BeanFacto

23、ry的Spring 自動(dòng)bean 的協(xié)作者。自動(dòng)裝配的不同模式:no - 這是默認(rèn)設(shè)置,表示沒(méi)有自動(dòng)裝配。應(yīng)使用顯式 bean進(jìn)行裝§配。byName - 它根據(jù) bean 的名稱注入對(duì)象依賴項(xiàng)。它匹配并裝配其屬性§與 XML 文件中由相同名稱定義的 bean。byType - 它根據(jù)類型注入對(duì)象依賴項(xiàng)。如果屬性的類型與 XML 文件中§的一個(gè) bean 名稱匹配,則匹配并裝配屬性。構(gòu)造函數(shù) - 它通過(guò)調(diào)用類的構(gòu)造函數(shù)來(lái)注入依賴項(xiàng)。它有大量的參數(shù)。§autodetect - 首先容器嘗試通過(guò)構(gòu)造函數(shù)使用 autowire 裝配,如果不§能,則嘗

24、試通過(guò) byType 自動(dòng)裝配。3.8. 自動(dòng)裝配有什么局限?覆蓋的可能性 - 您始終可以使用 <constructor-arg> 和 <property>§設(shè)置指定依賴項(xiàng),這將覆蓋自動(dòng)裝配?;驹獢?shù)據(jù)類型 - 簡(jiǎn)單屬性(如原數(shù)據(jù)類型,字符串和類)無(wú)法自動(dòng)裝§配。令人困惑的性質(zhì) - 總是喜歡使用明確的裝配,因?yàn)樽詣?dòng)裝配不太精確。§4、注解4.1. 什么是基于注解的容器配置不使用 XML 來(lái)描述 bean 裝配,開(kāi)發(fā)通過(guò)在相關(guān)的類,方法或字段上使用注解將配置移動(dòng)到組件類本身。它可以作為 XML 設(shè)置的替代方案。例如:Spring 的 Java

25、 配置是通過(guò)使用 Bean 和 Configuration 來(lái)實(shí)現(xiàn)。Bean 注解扮演與§元素相同的。§Configuration 類通過(guò)簡(jiǎn)單地調(diào)用同一個(gè)類中的其他Bean方§法來(lái)定義 bean 間依賴關(guān)系。例如:Configurationpublic class StudentConfig Beanpublic StudentBean myStudent() return new StudentBean();4.2. 如何在 spring 中啟動(dòng)注解裝配?默認(rèn)情況下,Spring 容器中未打開(kāi)注解裝配。因此,要使用基于注解裝配,我們必須通過(guò)配置<conte

26、xt:annotation-config /> 元素在 Spring 配置文件中啟用它。4.3. Component, Controller, Repository, Service 有何區(qū)別?Component:這將 java 類標(biāo)記為 bean。它是任何 Spring 管理組§件的通用構(gòu)造型。spring 的組件掃描機(jī)制現(xiàn)在可以將其拾取并將其拉入應(yīng)用程序環(huán)境中。Controller:這將一個(gè)類標(biāo)記為 Spring Web MVC器。標(biāo)有它的§Bean 會(huì)自動(dòng)導(dǎo)入到 IoC 容器中。Service:此注解是組件注解的特化。它對(duì) Component 注解§提

27、 供 任 何 其 他 行 為 。 您 可 以 在 服 務(wù) 層 類 中 使 用Service 而不是 Component,因?yàn)樗愿玫姆绞街付艘鈭D。Repository:這個(gè)注解是具有類似用途和功能的 Component 注解§的特化。它為 DAO 提供了額外的好處。它將 DAO 導(dǎo)入 IoC 容器,并使檢查的異常有資格轉(zhuǎn)換為 Spring DataAccessException。4.4. Required 注解有什么用?Required 應(yīng)用于 bean 屬性 setter 方法。此注解僅指示必須在配置時(shí)使用bean 定義中的顯式屬性值或使用自動(dòng)裝配填充受影響的 bean 屬性。

28、如果尚未填充受影響的 bean 屬性,則容器將拋出BeanInitializationException。示例:public class Employee private String name;Requiredpublic void setName(String name)=name;public string getName()return name;4.5. Autowired 注解有什么用?Autowired 可以更準(zhǔn)確地應(yīng)該在何處以及如何進(jìn)行自動(dòng)裝配。此注解用于在 setter 方法,構(gòu)造函數(shù),具有任意名稱或多個(gè)參數(shù)的屬性或方法上自動(dòng)裝配 bean。默認(rèn)情況下,它是

29、類型驅(qū)動(dòng)的注入。public class Employee private String name;Autowiredpublic void setName(String name) =name;public string getName()return name;4.6. Qualifier 注解有什么用?當(dāng)您創(chuàng)建多個(gè)相同類型的 bean 并希望僅使用屬性裝配其中一個(gè)bean 時(shí),您可以使用Qualifier 注解和 Autowired 通過(guò)指定應(yīng)該裝配哪個(gè)確切的bean 來(lái)消除歧義。例如,這里我們分別有兩個(gè)類,Employee 和 EmpAccount。在 EmpAcco

30、unt中,使用Qualifier 指定了必須裝配 id 為 emp1 的 bean。Employee.javapublic class Employee private String name;Autowiredpublic void setName(String name) =name;public string getName() return name;EmpAccount.javapublic class EmpAccount private Employee emp;AutowiredQualifier(emp1)public void showName() Sys

31、tem.out.println(“Employee name :”+emp.getName);4.7. RequestMapping 注解有什么用?RequestMapping 注解用于將特定 HTTP 請(qǐng)求方法到將處理相應(yīng)請(qǐng)求的器中的特定類/方法。此注釋可應(yīng)用于兩個(gè)級(jí)別:類級(jí)別:請(qǐng)求的 URL§方法級(jí)別:URL 以及 HTTP 請(qǐng)求方法§5、數(shù)據(jù)5.1. spring DAO 有什么用?Spring DAO 使得 JDBC,Hibernate 或 JDO 這樣的數(shù)據(jù)技術(shù)更容易以一的方式工作。這使得用戶容易在持久性技術(shù)之間切換。它還您在編寫(xiě)代碼時(shí),無(wú)需考慮捕獲每種技術(shù)不同的

32、異常。5.2. 列舉 Spring DAO 拋出的異常。5.3. spring JDBC API 中存在哪些類?JdbcTemplate§SimpleJdbcTemplate§NamedParameterJdbcTemplate§SimpleJdbcInsert§SimpleJdbcCall§5.4. 使用 SpringHibernate 的方法有哪些?我們可以通過(guò)兩種方式使用 SpringHibernate:使用 Hibernate 模板和回調(diào)進(jìn)行反轉(zhuǎn)1.擴(kuò)展 HibernateDAOSupport 并應(yīng)用 AOP器節(jié)點(diǎn)2.5.5. 列舉 s

33、pring 支持的事務(wù)管理類型Spring 支持兩種類型的事務(wù)管理:程序化事務(wù)管理:在此過(guò)程中,在編程的幫助下管理事務(wù)。它為您提供極1.大的靈活性,但維護(hù)起來(lái)非常。式事務(wù)管理:在此,事務(wù)管理與業(yè)務(wù)代碼分離。僅使用注解或基于2.XML 的配置來(lái)管理事務(wù)。5.6. spring 支持哪些 ORM框架Hibernate§iBatis§JPA§JDO§OJB§6、AOP6.1. 什么是 AOP?AOP(Aspect-Oriented Programming), 即 面向切面編程, 它與OOP( Object-Oriented Programming,

34、面向?qū)ο缶幊? 相輔相成, 提供了與OOP 不同的抽象軟件結(jié)構(gòu)的視角.在 OOP 中, 我們以類(class)作為我們的基本單元, 而 AOP 中的基本單元是 Aspect(切面)6.2. 什么是 Aspect?aspect 由 pointcount 和 advice 組成, 它既包含了橫切邏輯的定義, 也包括了連接點(diǎn)的定義. Spring AOP 就是負(fù)責(zé)實(shí)施切面的框架, 它將切面所定義的橫切邏輯編織到切面所指定的連接點(diǎn)中.AOP 的工作重心在于如何將增強(qiáng)編織目標(biāo)對(duì)象的連接點(diǎn)上, 這里包含兩個(gè)工作:如何通過(guò) pointcut 和 advice到特定的 joinpoint 上1.如何在 adv

35、ice 中編寫(xiě)切面代碼.2.可以簡(jiǎn)單地認(rèn)為, 使用 Aspect 注解的類就是切面.6.3. 什么是切點(diǎn)(JoinPoint)程序運(yùn)行中的一些時(shí)間點(diǎn), 例如一個(gè)方法的執(zhí)行, 或者是一個(gè)異常的處理.在 Spring AOP 中, join point 總是方法的執(zhí)行點(diǎn)。6.4. 什么是通知(Advice)?特定 JoinPoint 處的 Aspect 所采取的動(dòng)作稱為 Advice。Spring AOP 使用一個(gè) Advice 作為器,在 JoinPoint “周?chē)本S護(hù)一系列的器。6.5. 有哪些類型(Advice)?Before - 這些類型的 Advice 在 joinpoint 方法之前

36、執(zhí)行,并使用§Before 注解標(biāo)記進(jìn)行配置。After Returning - 這些類型的 Advice 在連接點(diǎn)方法正常執(zhí)行后執(zhí)§行,并使用AfterReturning 注解標(biāo)記進(jìn)行配置。After Throwing - 這些類型的 Advice 僅在 joinpoint 方法通過(guò)拋出§異常并使用 AfterThrowing 注解標(biāo)記配置時(shí)執(zhí)行。After (finally) - 這些類型的 Advice 在連接點(diǎn)方法之后執(zhí)行,無(wú)論方§法是正常還是異常返回,并使用 After 注解標(biāo)記進(jìn)行配置。Around - 這些類型的 Advice 在連接點(diǎn)之前

37、和之后執(zhí)行, 并使用§Around 注解標(biāo)記進(jìn)行配置。6.6. 指出在 spring aop 中 concern 和 cross-cutting concern 的不同之處。concern 是我們想要在應(yīng)用程序的特定模塊中定義的行為。它可以定義為我們想要實(shí)現(xiàn)的功能。cross-cutting concern 是一個(gè)適用于整個(gè)應(yīng)用的行為,這會(huì)影響整個(gè)應(yīng)用程序。例如,日志,安全性和數(shù)據(jù)傳輸是應(yīng)用程序幾乎每個(gè)模塊都需要關(guān)注的問(wèn)題,因此它們是跨領(lǐng)域的問(wèn)題。6.7. AOP 有哪些實(shí)現(xiàn)方式?實(shí)現(xiàn) AOP 的技術(shù),主要分為兩大類:靜態(tài)- 指使用 AOP 框架提供令進(jìn)行編譯,從而在編譯階段就

38、67;可生成 AOP類,因此也稱為編譯;編譯時(shí)編織(特殊編譯器實(shí)現(xiàn))§類加載時(shí)編織(特殊的類加載器實(shí)現(xiàn))。§動(dòng)態(tài)- 在運(yùn)行時(shí)在內(nèi)存中“臨時(shí)”生成 AOP 動(dòng)態(tài)類,因此也§被稱為運(yùn)行。JDK 動(dòng)態(tài)§CGLIB§6.8. Spring AOP and AspectJ AOP 有什么區(qū)別?Spring AOP 基于動(dòng)態(tài)方式實(shí)現(xiàn);AspectJ 基于靜態(tài)方式實(shí)現(xiàn)。Spring AOP 僅支持方法級(jí)別的 PointCut;提供了完全的 AOP 支持,它還支持屬性級(jí)別的 PointCut。6.9. 如何理解 Spring 中的?將 Advice 應(yīng)用于目標(biāo)對(duì)象后創(chuàng)建的對(duì)象稱為。在客戶端對(duì)象的情況下,目標(biāo)對(duì)象和對(duì)象是相同的。Advice + Target Object = Proxy6.10. 什么是編織(Weaving)?為了創(chuàng)建一個(gè) advice 對(duì)象而一個(gè) aspect 和其它應(yīng)用類型或?qū)ο?,稱為編織(Weavi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論