課程介紹:“框架技術”是軟件工程專業的核心課程,是本專業限選課,是Java 應用開發課程,是本專業學生就業的主要方向。
說明:框架設計其他章節的習題答案也在此“spring框架設計”專欄。
一、 填空題
- AspectJ框架中註解【@Pointcut 】用於定義切入點表達式,在使用時還需定義一個包含名字和任意參數的方法簽名來表示切入點名稱。
- 在Spring配置文件中,aop:aspect子元素的pointcut-ref屬性用於指定一個已經存在的【切入點名稱】。
- 在Spring的配置文件中,配置切面使用的是【aop:aspect】元素。
- 在Spring中,使用【ProxyFactoryBean】是創建AOP代理的基本方式。
- AOP術語中【Advice】表示AOP框架在特定的切入點執行的增強處理,即在定義好的切入點處所要執行的程序代碼。
二、 判斷題
- 如果在同一個連接點有多個通知需要執行,那麼在同一切面中,目標方法之前的前置通知和環繞通知的執行順序是未知的,目標方法之後的後置通知和環繞通知的執行順序也是未知的。(√)
- AspectJ框架中的註解@After用於定義最終final通知,不管是否異常,該通知都會執行。(√)
- Spring配置文件中的元素下可以包含多個aop:config元素,一個aop:config元素中又可以包含屬性和子元素,其子元素包括aop:pointcut、aop:advisor和aop:aspect。(√)
- Spring中的AOP代理默認就是使用CGLIB代理的方式來實現的。(×)
- Spring 3.0以後,Spring
AOP引入了對AspectJ的支持,並允許直接使用AspectJ進行編程,而Spring自身的AOP
API也儘量與AspectJ保持一致。(×)
三、 選擇題
- 以下不屬於ProxyFactoryBean類中的常用可配置屬性的是。(C)
A: target B: proxyInterfaces
C: targetClass D: interceptorNames - 以下哪種類型不是Spring中的通知類型。(D)
A: 異常通知 B: 前置通知 C: 後置通知 D: 最終通知 - 關於AspectJ註解的介紹,說法錯誤的是。(D)
A: @Aspect用於定義一個切面
B: @Pointcut用於定義切入點表達式
C: @Before用於定義前置通知,相當於BeforeAdvice
D: @After用於定義後置通知,相當於AfterReturningAdvice - 以下有關CGLIB代理相關說法正確的是。(C)
A:CGLIB代理的使用非常簡單,但它還有一定的侷限性——使用動態代理的對象必須實現一個或多個接口。
B:如果要對沒有實現接口的類進行代理,那麼可以使用CGLIB代理。
C:CGLIB是一個高性能開源的代碼生成包,在使用時需要另外導入CGLIB所需要的包。
D:Spring中的AOP代理,可以是JDK動態代理,也可以是CGLIB代理。 - 以下關於Spring AOP 的介紹錯誤的是。(C)
A: AOP的全稱是Aspect-Oriented Programming,即面向切面編程(也稱面向方面編程)。
B: AOP採取橫向抽取機制,將分散在各個方法中的重複代碼提取出來,這種採用橫向抽取機制的方式,採用OOP思想是無法辦到的。
C: 雖然AOP是一種新的編程思想,採取橫向抽取機制,是OOP的升級替代品。
D: 目前最流行的AOP框架有兩個,分別爲Spring AOP和AspectJ。
四、 簡答題
- 請對Spring的通知類型進行簡要說明。
Spring中主要包含5種通知類型:分別是環繞通知,前置通知,後置通知,異常通知和引介通知。
環繞通知表示在目標方法執行前後實施增強,可以應用於日誌、事務管理等功能。
前置通知表示在目標方法執行前實施增強,可以應用於權限管理等功能。
後置通知表示在目標方法執行後實施增強,可以應用於關閉流、上傳文件、刪除臨時文件等功能。
異常通知表示在方法拋出異常後實施增強,可以應用於處理異常記錄日誌等功能。
引介通知表示在目標類中添加一些新的方法和屬性,可以應用於修改老版本程序(增強類)。
整理不易,如有幫助請點贊支持!