Spring概述
spring的核心,IOC(Inversion of Control)——控制反转
IOC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。是由spring来负责控制对象的生命周期和对象间的关系。Spring的开发方式就是将所有的类在spring容器中登记, 告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你 的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象 都被spring控制,所以这叫控制反转。
DI(Dependency Injection)——依赖注入
Spring核心IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。spring就是通过 反射来实现注入,允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性
依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情,指就是通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦。
AOP(Aspect Oriented Programming)——面向切面编程
AOP一般适用于具有横切逻辑的场合,如事务管理、访问控制、性能监控等
在业务系统中,总有一些散落、渗透到系统各处且不得不处理的事情,这些穿插在既定业务中的操作就是所谓的“横切逻辑”,也称为切面。面向切面编程,简单地说就是在不改变源程序的基础上为代码段增加新的功能,对代码段进行增强处理。
AOP的基本概念:
-
切面:一个模块化的横切逻辑(也称横切关注点),可能会横切多个对象。(可以理解为由增强处理和切入点组成,既包含了横切逻辑的定义,又包含了连接点的定义。)
-
连接点:程序执行中的某个具体执行点。如上例中原对象(非代理对象)的方法。
-
增强处理:切面在某个特定连接点上执行的代码逻辑。
-
切入点:对连接点的特征进行描述,可使用正则表达式,类似于Servlet的url-pattern,用于匹配连接点(方法)。增强处理与一个切入点表达式相关联,并在与这个切入点匹配的某个连接点运行。
-
目标对象:被一个或多个切面增强的对象。
-
AOP代理:由AOP所创建的对象,实现执行增强处理方法等功能。
-
织入:将增强处理连接到应用程序中的类型或对象上的过程,叫织入。
-
增强处理类型:在原对象的方法连接点之前插入的增强处理叫前置增强,在其之后的叫后置增强。此外还要环绕增强、异常抛出增强、最终增强等类型。