1
以下不属于ProxyFactoryBean类中的常用可配置属性的是()。
正确答案: C
常用可配置属性:
target:代理的目标对象
proxyInterface: 代理所需要的实现的接口,可以是多个接口,该属性还有一个别名属性interfaces.
proxyTargertClass: 是否对类进行代理(而不是对接口进行代理)。设置为true时,使用CGLIB代理。interceptorNames:需要织入目标的advice.
singleton:返回的代理是否为单实例,默认为true.
optimize:当设置为true时,强制使用CGLIB
2-42
以下哪种类型不是Spring中的通知类型()。
正确答案: D
(1)前置通知(Before advice):在某连接点之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常),应用于权限管理。
(2)后置通知(After returning advice):在某连接点后执行的通知:应用于关闭流,上传文件,删除临时文件。
(3)异常通知( throwsadvice):在方法抛出异常后执行的通知,应用于处理异常记录日志等功能。
(4)环绕通知(MethodInterceptor ): 环绕通知可以在方法调用前后执行的通知,应用于日志和事务管理。
(5)引介通知(IntroductionInterceptor):在目标类中添加一些新的方法和属性,可以应用于修复老版本。
3-P51
关于AspectJ注解的介绍,说法错误的是()。
- A、
- B、
- C、
- D、
正确答案: D
4
以下有关CGLIB代理相关说法正确的是()。
- A、
- B、
- C、
- D、
正确答案: D 我的答案:D得分: 2.4分
A.GDK代理的使用非常简单,但它还有一定的局限性——使用动态代理的对象必须实现一个或多个接口
B.如果要对没有实现接口的类进行代理,那么可以使用CGIB代理
C.CGLIB是一个高性能开源的代码生成包,在使用时不需要另外导入CGLIB所需要的包(在spring的核心包中已经集成了CGLIB所需要的包)
D.正确
5
下列有关AOP专业术语中,用于指那些被拦截到的点的是()。
正确答案: A 我的答案:A得分: 2.4分
Joinpoint-连接点--方法的调用
Pointcut-切入点,切入与程序流程的交叉点
Aspect-切面--表示AOP框架在特定的切入点执行的增强处理,即在定义好的切入点处所要执行的程序代码。
Advice-通知/增强处理
Target Object-目标对象
Proxy-代理
Weaving-织入--将切面代码插入到目标对象上,从而生成代理对象的过程。
6
下列有关AOP专业术语中,用于表示切面与程序流程的交叉点的是()。
正确答案: B 我的答案:B得分: 2.4分
7
以下关于Spring AOP 的介绍错误的是()。
- A、
- B、
- C、
虽然AOP是一种新的编程思想,采取横向抽取机制,是OOP的升级替代品--(不是替代品。AOP的延伸和补充)
- D、
正确答案: C 我的答案:C得分: 2.4分
二.填空题(共9题,21.6分)
1-P35
将切面代码插入到目标对象上,从而生成代理对象的过程。
第一空:
Weaving;织入
2-P35
目前最流行的AOP框架有两个,分别为SpringAOP和( )。
第一空:
AspectJ
3-P36
AOP采取()抽取机制,将分散在各个方法中的重复代码提取出来,然后在程序编译或运行时,再将这些提取出来的代码应用到需要执行的地方。
第一空:
横向
4-P35
()的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程)。
第一空:
AOP
5
AspectJ框架中注解( )用于定义切入点表达式,在使用时还需定义一个包含名字和任意参数的方法签名来表示切入点名称。
第一空:
@Pointcut
6-P47.3
在Spring配置文件中,<aop:aspect>子元素的( )属性用于指定一个已经存在的切入点名称。
第一空:
pointcut-ref
7-P46
在Spring的配置文件中,配置切面使用的是( )元素。
第一空:
<aop:aspect>;aop:aspect
8-P42
在Spring中,使用( )是创建AOP代理的基本方式。
第一空:
ProxyFactoryBean
ProxyFactoryBean是FactoryBean接口的实现类
9-P36
AOP术语中( )表示AOP框架在特定的切入点执行的增强处理,即在定义好的切入点处所要执行的程序代码。
第一空:
Advice;通知
三.判断题(共25题,61.6分)
1
如果在同一个连接点有多个通知需要执行,那么在同一切面中,目标方法之前的前置通知和环绕通知的执行顺序是未知的,目标方法之后的后置通知和环绕通知的执行顺序也是未知的()。
我的答案:√ 得分: 2.4分正确答案:√
2-P51-基于注解的声明式AspectJ
AspectJ框架中的注解@After用于定义最终final通知,不管是否异常,该通知都会执行()。
我的答案:√ 得分: 2.4分正确答案:√
3-
Spring配置文件中的<beans>元素下可以包含多个<aop:config>元素,一个<aop:config>元素中又可以包含属性和子元素,其子元素包括<aop:pointcut>、<aop:advisor>和<aop:aspect>()。
我的答案:√ 得分: 2.4分正确答案:√
4-39
Spring中的AOP代理默认就是使用CGLIB代理的方式来实现的()。
我的答案:×
不是,AOP代理使用动态代理的对象必须使用一个或多个接口,而CGLIB对没有实现接口的类进行代理,所以AOP代理不能使用CGLIB代理来实现
5-40
使用CGLIB创建代理类,该代理类需要实现MethodInterceptor接口,并实现接口中的intercept()方法()。
我的答案:√ 得分: 2.4分正确答案:√
6-P36
对于使用业务接口的类,Spring默认会使用CGLIB动态代理来实现AOP()。
我的答案:×
对于使用业务接口的类,Spring默认会使用JDK动态代理来实现AOP
7
Spring AOP中的代理就是由AOP框架动态生成的一个对象,该对象可以作为目标对象使用()。
我的答案:√
8--51
AspectJ框架为AOP的实现提供了一套注解,用以取代Spring配置文件中为实现AOP功能所配置的臃肿代码()
我的答案:√
9-45
使用AspectJ实现AOP有两种方式:一种是基于XML的声明式AspectJ,另一种是基于注解的声明式AspectJ()。
我的答案:√ 得分: 2.4分正确答案:√
10
Spring 3.0以后,Spring AOP引入了对AspectJ的支持,并允许直接使用AspectJ进行编程,而Spring自身的AOP API也尽量与AspectJ保持一致()。
我的答案:× 得分: 2.4分正确答案:×
2.0
11-35
AspectJ是一个基于Java语言的AOP框架,它提供了强大的AOP功能()。
我的答案:√ 得分: 2.4分正确答案:√
12
在Spring中,使用ProxyFactoryBean是创建AOP代理的唯一方式()。
我的答案:× 得分: 2.4分正确答案:×
13-47
Spring中的通知按照在目标类方法的连接点位置,可以分为4种类型()。
我的答案:× 得分: 2.4分正确答案:×
5种。去书上看看
14
CGLIB是一个高性能开源的代码生成包,它采用非常底层的字节码技术,对指定的目标类生成一个子类,并对子类进行增强,在使用时需要另外导入CGLIB所需要的包()。
我的答案:×
15
在Spring中,使用ProxyFactoryBean是创建AOP代理的最基本方式()。
我的答案:√
16
如果要对没有实现接口的类进行代理,那么可以使用CGLIB代理()。
我的答案:√
17
GLIB代理的使用非常简单,但它还有一定的局限性——使用动态代理的对象必须实现一个或多个接口()。
正确答案:×
JDK代理的使用非常简单,但它还有一定的局限性——使用动态代理的对象必须实现一个或多个接口()。
18
AOP手动使用代理模式有两个典型的例子,分别为JDK动态代理和CGLIB代理()。
我的答案:√
19
AOP专业术语中,切面是指要对哪些Joinpoint进行拦截()。
我的答案:×
切面通常是指封装的用于插入系统功能的类。
20
AOP专业术语中,Target是指代理的目标对象()。
正确答案:√
21
AspectJ是一个基于Java语言的AOP框架,从Spring2.0开始,Spring AOP引入了对AspectJ的支持,AspectJ扩展了Java语言,提供了一个专门的编译器,在编译时提供横向代码的织入()。
正确答案:√
22
Spring AOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期间通过代理方式向目标类织入增强的代码()。
正确答案:√
23
目前最流行的AOP框架有两个,分别为Spring AOP和AspectJ()。
正确答案:√
24
AOP采取横向抽取机制,将分散在各个方法中的重复代码提取出来,然后再将这些提取出来的代码应用到需要执行的地方, 是OOP的替代品()。
正确答案:×
不是替代品,是延伸和补充。
25
AOP的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程)()。
对