控制反转(IOC,Inversion Of Controll)
控制反转指的是对象创建责任的反转。原本我们需要创建一个对象必须要手动去new一个,那么在类中由于代码越来越多,需要管理的依赖和引用也会越来越多,代码维护的成本也会越来越高。Spring就把创建对象的控制权交给了IOC容器去完成。
面向切面编程(AOP,Aspect-Oriented Programming)
首先AOP的目的是为了解耦,其中最经典的一个例子就是日志记录。在没有使用Spring之前,我们要记录日志就必然会产生很多类似的代码,这些与业务无关的日志代码与业务代码耦合在了一起。Spring就把这些业务无关的代码(横切)分离成不同的组件,每个组件各负责一块功能,在需要使用这个功能的时候,通过定义好的切点,将组件织入到业务代码中,从而达到我们想要的效果。
-
连接点:在应用执行过程中能够插入切面的一个点。
-
通知:定义了切面是什么以及何时使用的概念,一共有5种通知类型。
-
前置通知(Before):在目标方法被调用之前调用通知。
-
后置通知(After):在目标方法完成之后调用通知,此时不会关心方法的输出是什么。
-
返回通知(After-Returning):在目标方法成功执行之后调用通知。
-
异常通知(After-Throwing):在目标方法抛出异常后调用通知。
-
环绕通知(Around):通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义的行为。
-
切面:通知和切点(连接点)的结合。