一、Spring设计理念:
Spring是面向Bean的编程
二、Spring两大核心技术
-
控制反转(IoC:Inversion of Control ) /依赖注入(DI:Dependency Injection )
-
面向切面编程(AOP:Aspect Oriented Programming)
1、控制反转/依赖注入:
将组件对象的控制权从代码本身转移到外部容器;组件之间以配置文件的形式组织在一起,而不是以硬编码的方式耦合在一起。
(ps:1、 组件化的思想:分离关注点,使用接口,不在关注实现;
2、依赖注入:将组件的构建和使用分开)
2、面向切面编程(AOP):
1、AOP的目标:让我们可以“专心做事”;
2、AOP原理:
1.将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决;
2.采用代理机制组装起来运行,在不改变原程序的基础上对代码段进行增强处理,增加新的功能。
(ps:所谓面向切面编程,是一种通过预编译和运行期动态代理的方式实现在不修改源代码的情况下给程序动 态添加功能的技术)
3、AOP相关术语:
1.增强处理(Advice);
2.前置增强;
3.后置增强;
4.环绕增强、异常抛出增强、最终增强等类型;
5.切入点(Pointcut):简单的说,就是连接点的查询条件;
示例:
6.连接点(JoinPoint);
7.切面(Aspect);
8.目标对象(Targetobject);
9.AOP代理(AOPproxy);
10.织入(Weaving)。
三、表达式匹配规则举例:
-
public * addNewUser(entity.User): “*”表示匹配所有类型的返回值。
-
public void (entity.User): “”表示匹配所有方法名。
-
public void addNewUser(..): “..”表示匹配所有参数个数和类型。
-
* com.service..(..):匹配com.service包下所有类的所有方法。
-
* com.service...(..):匹配com.service包及其子包下所有类的所有方法
四、怎么使用AOP:
1、织入增强处理;
2、织入:在切入点插入增强处理。
五、总结:
AOP:
面向切面编程:从系统中分离出切面,独立于业务逻辑实现,在程序执行时织入程序中运行(在什么位置,执行什么功能)
配置AOP主要使用aop命名空间下的元素完成,可以实现定义切入点和织入增强等操作。