IOC
依赖注入(DI),控制反转(IOC):在传统的编程中,如果要借用一个类,往往要由借用者来创建这个类。但在spring框架中,则由spring框架来创建,然后注入调用者,因此成为控制反转。
依赖注入的两种方式
-
设置注入
-
构造注入
AOP
面向切面编程(AOP):通过预编译的方式和运行时使用动态代理,使功能统一维护的一种技术(spring容器中管理对象生成代理对象的),底层是基于代理技术实现的。使用AOP技术可以将业务逻辑的各部分分离开,降低耦合,提高效率。是对依赖注入的补充,完善了面向对象编程(OOP)
通俗解释:面向切面编程(AOP)就是纵向的编程。比如业务A和业务B现在需要一个相同的操作,传统方法我们可能需要在A、B中都加入相关操作代码,而应用AOP就可以只写一遍代码,A、B共用这段代码。并且,当A、B需要增加新的操作时,可以在不改动原代码的情况下,灵活添加新的业务逻辑实现
AOP的主要特点:
-
允许用户自定义切面
-
提供声明式事务管理
AOP框架的特征
-
源代码无关性
-
各个步骤之间有良好的隔离性
AOP的主要应用场景:
AOP主要一般应用于签名验签、参数校验、日志记录、事务控制、权限控制、性能统计、异常处理等。
AOP中的术语
通知: 通知定义了切面是什么以及何时使用的概念。Spring 切面可以应用5种类型的通知:
-
前置通知(Before):在目标方法被调用之前调用通知功能。
-
后置通知(After):在目标方法完成之后调用通知,此时不会关心方法的输出是什么。
-
返回通知(After-returning):在目标方法成功执行之后调用通知。
-
异常通知(After-throwing):在目标方法抛出异常后调用通知。
-
环绕通知(Around):通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义的行为
连接点:是在应用执行过程中能够插入切面的一个点。
- 切点: 切点定义了切面在何处要织入的一个或者多个连接点。
- 切面:是通知和切点的结合。通知和切点共同定义了切面的全部内容。
- 引入:引入允许我们向现有类添加新方法或属性。
- 织入:是把切面应用到目标对象,并创建新的代理对象的过程。切面在指定的连接点被织入到目标对象中。在目标对象的生命周期中有多个点可以进行织入:
- 编译期: 在目标类编译时,切面被织入。这种方式需要特殊的编译器。AspectJ的织入编译器就是以这种方式织入切面的。
- 类加载期:切面在目标加载到JVM时被织入。这种方式需要特殊的类加载器(class loader)它可以在目标类被引入应用之前增强该目标类的字节码。
- 运行期: 切面在应用运行到某个时刻时被织入。一般情况下,在织入切面时,AOP容器会为目标对象动态地创建一个代理对象。SpringAOP就是以这种方式织入切面的。
几篇还没看的博客
https://blog.csdn.net/gloomy_114/article/details/68946881
https://blog.csdn.net/qq_26562641/article/details/54285942
网友评论