SpringAOP复习

article/2025/9/14 8:38:15

作业1

目录

  • 作业1
    • 一.单选题
    • 二.填空题
    • 三.判断题

一.单选题

1、以下不属于ProxyFactoryBean类中的常用可配置属性的是()。

A、target
B、proxyInterfaces
C、targetClass
D、interceptorNames

答案:C

ProxyFactoryBean 是FactoryBean 接口的实现类,FactoryBean 负责实例化一个Bean,而 ProxyFactoryBean 负责为其他Bean创建代理实例。使用 ProxyFactoryBean 是创建AOP 代理的基本方式
请添加图片描述

2、以下哪种类型不是Spring中的通知类型()。

A、异常通知
B、前置通知
C、后置通知
D、最终通知

答案:D

Spring 的通知类型:
环绕通知:在目标方法执行前后实施增强。可应用于日志。事务管理等。
前置通知:在目标方法执行实施增强。可应用于权限管理等。
后置通知:在目标方法执行实施增强。可应用于关闭流。上传文件,删除临时文件等。
异常通知:在方法抛出后实施增强,可应用于处理日常记录日志等。
引介通知:在目标类中添加一些新的方法和属性,可应用于修改老版本程序(增强类)。

3、关于AspectJ注解的介绍,说法错误的是()。

A、@Aspect用于定义一个切面
B、@Pointcut用于定义切入点表达式
C、@Before用于定义前置通知,相当于BeforeAdvice
D、@After用于定义后置通知,相当于AfterReturningAdvice

答案:D

请添加图片描述
请添加图片描述

4、以下有关CGLIB代理相关说法正确的是()。

A、CGLIB代理的使用非常简单,但它还有一定的局限性——使用动态代理的对象必须实现一个或多个接口
B、如果要对没有实现接口的类进行代理,那么可以使用JDK代理
C、CGLIB是一个高性能开源的代码生成包,在使用时需要另外导入CGLIB所需要的包
D、Spring中的AOP代理,可以是JDK动态代理,也可以是CGLIB代理

答案:D

如果要对没有实现接口的类进行代理,可以使用CGLIB代理。
CGLIB:是一个高性能开源的代码生成包,采用非常底层的字节码技术对指定的目标类生成一个子类,并对子类进行增强。且 在Spring的核心包中已经集成了CGLIB所需的包所以开发中不需要另外导入JAR包。

5、下列有关AOP专业术语中,用于指那些被拦截到的点的是()。

A、Joinpoint
B、Pointcut
C、Aspect
D、Advice

答案:A

请添加图片描述

6、下列有关AOP专业术语中,用于表示切面与程序流程的交叉点的是()。

A、Joinpoint
B、Pointcut
C、Aspect
D、Advice

答案:B

7、以下关于Spring AOP 的介绍错误的是()。

A、AOP的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程)
B、AOP采取横向抽取机制,将分散在各个方法中的重复代码提取出来,这种采用横向抽取机制的方式,采用OOP思想是无法办到的
C、虽然AOP是一种新的编程思想,采取横向抽取机制,是OOP的升级替代品
D、目前最流行的AOP框架有两个,分别为Spring AOP和AspectJ

答案:C

AOP 的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程)。它是面向对象编程(OOP)的一种补充,目前已成为一种比较成熟的编程方式。
AOP采取横向抽取机制,然后在程序编译或运行时,再将这些提取出来的代码应用到需要执行的地方。
目前最流行的AOP框架有两个,分别为Spring AOP和AspectJ。

二.填空题

1、将切面代码插入到目标对象上,从而生成代理对象的过程。

答案:Weaving 或 织入
答案解析:选择第5题

2、目前最流行的AOP框架有两个,分别为SpringAOP和( )。

答案:AspectJ
答案解析:选择第7题

3、AOP采取()抽取机制,将分散在各个方法中的重复代码提取出来,然后在程序编译或运行时,再将这些提取出来的代码应用到需要执行的地方。

答案:横向
答案解析:同上

4、()的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程)。

答案:AOP
答案解析:同上

5、AspectJ框架中注解( )用于定义切入点表达式,在使用时还需定义一个包含名字和任意参数的方法签名来表示切入点名称。

答案:@Pointcut
答案解析:选择第3题

6、在Spring配置文件中,< aop:aspect >子元素的( )属性用于指定一个已经存在的切入点名称。

答案:pointcut-ref
答案解析:基于XML的声明式AspectJ

请添加图片描述

7、在Spring的配置文件中,配置切面使用的是( )元素。

答案:< aop:aspect > 或 aop:aspect
答案解析:同上

8、在Spring中,使用( )是创建AOP代理的基本方式。

正确答案:ProxyFactoryBean
答案解析:选择第1题

9、AOP术语中( )表示AOP框架在特定的切入点执行的增强处理,即在定义好的切入点处所要执行的程序代码。

答案:Advice;通知
答案解析:选择第5题

三.判断题

1、如果在同一个连接点有多个通知需要执行,那么在同一切面中,目标方法之前的前置通知和环绕通知的执行顺序是未知的,目标方法之后的后置通知和环绕通知的执行顺序也是未知的()。

答案:√

2、AspectJ框架中的注解@After用于定义最终final通知,不管是否异常,该通知都会执行()。

答案:√

3、Spring配置文件中的< beans >元素下可以包含多个< aop:config>元素,一个< aop:config >元素中又可以包含属性和子元素,其子元素包括< aop:pointcut >、< aop:advisor >和< aop:aspect >()。

答案:√

4、Spring中的AOP代理默认就是使用CGLIB代理的方式来实现的()。

答案:×

5、使用CGLIB创建代理类,该代理类需要实现MethodInterceptor接口,并实现接口中的intercept()方法()。

答案:√

6、对于使用业务接口的类,Spring默认会使用CGLIB动态代理来实现AOP()。

答案:×

对于使用业务接口的类,Spring默认会使用JDK动态代理来实现AOP

7、Spring AOP中的代理就是由AOP框架动态生成的一个对象,该对象可以作为目标对象使用()。

答案:√

8、AspectJ框架为AOP的实现提供了一套注解,用以取代Spring配置文件中为实现AOP功能所配置的臃肿代码()

答案:√

9、使用AspectJ实现AOP有两种方式:一种是基于XML的声明式AspectJ,另一种是基于注解的声明式AspectJ()。

答案:√

10、Spring 3.0以后,Spring AOP引入了对AspectJ的支持,并允许直接使用AspectJ进行编程,而Spring自身的AOP API也尽量与AspectJ保持一致()。

答案:×

Spring 2.0之后

11、AspectJ是一个基于Java语言的AOP框架,它提供了强大的AOP功能()。

答案:√

12、在Spring中,使用ProxyFactoryBean是创建AOP代理的唯一方式()。

答案:×

ProxyFactoryBean是创建AOP代理最基本的方式

13、Spring中的通知按照在目标类方法的连接点位置,可以分为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的替代品()。

答案:×

虽然AOP是一种新的编程思想,但却不是OOP的替代屏,它只是OOP的延伸和补充。

25、AOP的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程)()。

答案:√


http://chatgpt.dhexx.cn/article/ULHy206w.shtml

相关文章

04、SpringAOP详解

1、Spring AOP简介 1、什么是AOP 1、定义阐述 AOP的全称是 Aspect Oriented Programming&#xff0c;是面向切面编程的技术&#xff0c;把一个个的横切关注点放到某个模块中去&#xff0c;称之为切面。那么每一个的切面都能影响业务的某一种功能&#xff0c;切面的目的就是功…

SpringAop之joinPoint讲解

一、学习背景 摸鱼的时候继续复刻demo&#xff0c;没错&#xff0c;同之前一篇文章&#xff0c;在写aop时又发现自己对aop只停留在面试阶段&#xff0c;甚至还不如&#xff0c;完全不会实践&#xff0c;所以在此记录复刻aop用到的的一些且自己已经遗忘的知识。 那么复刻的一个…

SpringAOP详细配置与使用

目录 SpringAOP简介 AOP概念 Spring AOP简单流程图 Spring AOP之Annotation 前置通知(Before advice) 返回后通知(After reurning advice) 抛出异常后通知(After throwing advice) 后置通知(After (finally) advice) 环绕通知(Around advice) 引入(Introduction) Sp…

SpringAOP的注解形式

铁子们&#xff0c;快扫码关注啦&#xff01;或 wx搜索&#xff1a;“聊5毛钱的java”&#xff0c;关注可领取博主的Java学习视频资料&#xff0c;保证都是干货 上一篇讲了配置文件形式的SpringAOP&#xff1a;Spring中的AOP以及切入点表达式和各种通知 本篇继续看一下注解形…

Spring AOP超详细解析

AOP - 面向切面编程&#xff08;Aspect Oriented Programming&#xff09; Spring早期版本的核心功能&#xff1a;管理对象生命周期与对象分配。 即Bean本身的管理创建&#xff0c;以及它整个生命周期里跟其他对象相互之间引用装配 为了更好的实现管理和装配&#xff0c;一个…

Spring学习:AOP概述

一、AOP概念 AOP是指面向切面编程&#xff0c;利用 AOP 可以对业务逻辑的各个部分进行隔离&#xff0c;从而使得业务逻辑各部分之间的耦合度降低&#xff0c;提高程序的可重用性&#xff0c;同时提高了开发的效率。 通俗描述&#xff1a;不通过修改源代码方式&#xff0c;在主干…

SpringAOP学习--SpringAOP简介及原理

前文对AOP做了介绍&#xff0c;实际项目中&#xff0c;一般不会直接上手手动实现aop&#xff0c;而是使用一些高级封装的aop实现&#xff0c;如SpringAOP。 Spring是一个广泛应用的框架&#xff0c;SpringAOP则是Spring提供的一个标准易用的aop框架&#xff0c;依托Spring的IOC…

图文详解Spring AOP,你学会了吗?

如果说 IOC 是 Spring 的核心&#xff0c;那么面向切面编程AOP就是 Spring 另外一个最为重要的核心&#xff0c;需要重点掌握mikechen 本篇主要会详解以下六点&#xff1a; 1.AOP的定义 2.AOP的作用 3.AOP的应用场景 4.Spring AOP的术语 AOP核心概念Spring AOP 通知分类S…

Spring AOP全面详解(超级详细)

如果说IOC 是 Spring 的核心&#xff0c;那么面向切面编程AOP就是 Spring 另外一个最为重要的核心mikechen AOP的定义 AOP &#xff08;Aspect Orient Programming&#xff09;,直译过来就是 面向切面编程,AOP 是一种编程思想&#xff0c;是面向对象编程&#xff08;OOP&…

mysql执行SQL脚本

方法一 【Mysql的bin目录】\mysql –u用户名 –p密码 –D数据库<【sql脚本文件路径全名】 示例&#xff1a; 如果mysql配了全局变量&#xff0c;就不需要到Mysql的bin目录下执行&#xff0c;可以在任何地方使用用户名、密码、指定数据库等参数值与参数名不需要隔空格 不…

SpringBoot 实现SQL脚本自动执行

SpringBoot 实现配置SQL脚本自动执行 一. 背景 我们可能遇到过这种情况: 在公网开发时, 新增数据表非常容易, 直接登录到对应服务器的mysql / 使用Navicat访问mysql服务器. 然后去执行sql语句或脚本即可在内网开发时, 由于都在一个网段, 所以操作也比较方便但是在公网开发, 部…

flink-sql-client提交sql脚本文件

标题: flink-sql-client提交sql脚本文件 日期: 2021-10-22 22:11:34 标签: [flink,sql-client] 分类: flink 我们知道&#xff0c;sql-client.sh可以提供给我们一个sql交互界面&#xff0c;让我们没执行一个sql&#xff0c;就可以看到执行结果&#xff0c;也可以交互式查询表的…

如何在mysql中执行sql脚本文件

一、sql脚本文件 简介 xxxx.sql这种文件被称为sql脚本文件。sql脚本文件中编写了大量的sql语句。我们执行sql脚本文件的时候&#xff0c;该文件中所有的sql语句会全部执行&#xff01;批量的执行SQL语句&#xff0c;可以使用sql脚本文件。 上面这个vip.sql就是sql脚本文件&am…

使用sql脚本创建数据库表

准备脚本语句&#xff1a; CREATE TABLE test (title varchar(100) DEFAULT NULL,author varchar(10) DEFAULT NULL,digest varchar(255) DEFAULT NULL,content text,content_source_url varchar(500) DEFAULT NULL,thumb_media_id varchar(255) DEFAULT NULL,need_open_comme…

PowerDesigner生成Sql脚本

点击工具栏上的“Database”&#xff0c;选择“Change Current DBMS”进行修改导出脚本类型&#xff0c;可以选择mysql、sql server/ oracle 、db2等主流的数据库。 在DBMS中点击下拉菜单&#xff0c;选择要导出的数据库脚本&#xff0c;对名字进行自定义&#xff0c;点击确定即…

PowerDesigner导入sql脚本

一个好的数据库建模,不但可以让人直观的理解模型,充分的利用数据库技术,优化数据库的设计,而且还可以让新员工快速的熟悉数据库表结构与业务之间的关系.无奈的是随着开发过程中,数据库表结构字段的增删以及关联关系的变动给数据库模型带来维护上的巨大工作量.现为了维护上的简单…

dbeaver导入sql脚本

新建数据库 执行脚本 选择脚本文件 选择mysql 然后按确定就行了

springboot + mybatis启动时执行sql脚本

目录 1. 创建数据版本表&#xff0c;结构如下&#xff1a; 2. 创建HdVersion对象 3. 创建执行sql的dao 4. 创建dao对应的xml 5.创建sql执行器&#xff0c;实现ApplicationRunner 6. 结语 背景&#xff1a;项目开发或发布阶段修改表结构&#xff0c;项目更新时需要手动执行脚…

SpringBoot启动自动执行sql脚本

在开发当中我们每次发布服务都需要手动执行脚本&#xff0c;然后重启服务&#xff0c;而SpringBoot有服务启动自动执行sql脚本的功能的&#xff0c;可以为我们省去手动执行脚本的这一步&#xff0c;只需要部署新的服务即可。 这个功能是SpringBoot自带的不需要引入额外的依赖&a…

Excel数据转化为sql脚本

在实际项目开发中&#xff0c;有时会遇到客户让我们把大量Excel数据导入数据库的情况。这时我们就可以通过将Excel数据转化为sql脚本来批量导入数据库。 1 在数据前插入一列单元格&#xff0c;用来拼写sql语句。 具体写法&#xff1a;"insert into t_student (id,name,ag…