springaop⾯试题
Spring⾯向切⾯编程(AOP)
1 解释AOP
⾯向切⾯的编程,或AOP, 是⼀种编程技术,允许程序模块化横向切割关注点,或横切典型的责任划分,如⽇志和事务管理。
2.Aspect 切⾯
AOP核⼼就是切⾯,它将多个类的通⽤⾏为封装成可重⽤的模块,该模块含有⼀组API提供横切功能。⽐如,⼀个⽇志模块可以被称作⽇志的AOP切⾯。根据需求的不同,⼀个应⽤程序可以有若⼲切⾯。在Spring AOP中,切⾯通过带有@Aspect注解的类实现。
3. 在Spring AOP 中,关注点和横切关注的区别是什么?
关注点是应⽤中⼀个模块的⾏为,⼀个关注点可能会被定义成⼀个我们想实现的⼀个功能。
横切关注点是⼀个关注点,此关注点是整个应⽤都会使⽤的功能,并影响整个应⽤,⽐如⽇志,安全和数据传输,⼏乎应⽤的每个模块都需要的功能。因此这些都属于横切关注点。
4 连接点
连接点代表⼀个应⽤程序的某个位置,在这个位置我们可以插⼊⼀个AOP切⾯,它实际上是个应⽤程序执⾏Spring AOP的位置。
5. 通知
通知是个在⽅法执⾏前或执⾏后要做的动作,实际上是程序执⾏时要通过SpringAOP框架触发的代码段。
Spring切⾯可以应⽤五种类型的通知:
before:前置通知,在⼀个⽅法执⾏前被调⽤。
after: 在⽅法执⾏之后调⽤的通知,⽆论⽅法执⾏是否成功。
after-returning: 仅当⽅法成功完成后执⾏的通知。
after-throwing: 在⽅法抛出异常退出时执⾏的通知。
around: 在⽅法执⾏之前和之后调⽤的通知。
spring aop应用场景
6. 切点
切⼊点是⼀个或⼀组连接点,通知将在这些位置执⾏。可以通过表达式或匹配的⽅式指明切⼊点。
7. 什么是引⼊?
引⼊允许我们在已存在的类中增加新的⽅法和属性。
8. 什么是⽬标对象?
被⼀个或者多个切⾯所通知的对象。它通常是⼀个代理对象。也指被通知(advised)对象。
9. 什么是代理?
代理是通知⽬标对象后创建的对象。从客户端的⾓度看,代理对象和⽬标对象是⼀样的。
10. 有⼏种不同类型的⾃动代理?
BeanNameAutoProxyCreator
DefaultAdvisorAutoProxyCreator
Metadata autoproxying
11. 什么是织⼊。什么是织⼊应⽤的不同点?
织⼊是将切⾯和到其他应⽤类型或对象连接或创建⼀个被通知对象的过程。
织⼊可以在编译时,加载时,或运⾏时完成。
12. 解释基于XML Schema⽅式的切⾯实现。
在这种情况下,切⾯由常规类以及基于XML的配置实现。
13. 解释基于注解的切⾯实现
在这种情况下(基于@AspectJ的实现),涉及到的切⾯声明的风格与带有java5标注的普通java类⼀致。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论