1.aop的应用场景?
2.Aop的原理?
Aop 指面向切面编程,作为面向对象的补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等。Aop实现的关键在于AOP框架自动创建AOP代理,主要分为:静态代理和动态代理,静态代理的代表为AspectJ;而动态代理则以Speing Aop为代表。
Spring Aop中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理。JDK动态代理通过反射来接受被代理的类,并且要求被代理的类必须实现一个接口。JDK动态代理的核心是InvocationHandler接口和Proxy类。
如果目标类没有实现接口,那么Spring Aop会选择使用CGLIB动态代理目标类。CGLIB,是一个代码生成的类库,可以在运行时动态的生成某个类的子类。
3.如何理解AOP中的连接点、切点、增强、引介、织入、切面这些概念
-
连接点:程序执行的某个特定位置(如:某个方法调用前、调用后,方法抛出异常后)。一个类或一段程序拥有一些具有边界性质的特定点,这些代码中的特定点就是连接点。
-
切点:如果连接点相当于数据中的记录,那么切点相当于查询条件,一个切点可以匹配多个连接点。Spring Aop的规则解析引擎负责解析切点所设定的查询条件,找到对应的连接点。
-
增强:增强是织入到目标类连接点上的一段程序代码。Spring提供的增强接口都是带方位名的,如:BeforeAdvice…
-
引介:引介是一种特殊的增强。它为类添加一些属性和方法。
-
织入:织入是将增强添加到目标类具体连接点上的过程。
-
切面:前面是由切点和增强(引介)组成的,它包括了对横切关注功能的定义,也包括了对连接点的定义。
***帅气的远远啊***