Spring框架组成
最基础的部分Spring Ioc,提供了IoC特性。Spring AOP基于Spring Core的面向切面编程实现。
Spring的核心是一个完整的基于控制反转的轻量级容器,用户可以使用它建立自己的应用程序。
Spring IoC
IoC全称 Inversion of Control,即为控制反转。意为把对外资源的控制权反转过来。IoC是一种设计理念。
DI(Dependency Injection)依赖注入。表示将依赖的对象注入到需要的类中,是IoC的一种具体实现方式。
实现步骤:
- 下载依赖jar包
- 编写Spring配置文件
- 编写测试代码通过Spring进行属性注入
Spring AOP
AOP全称Aspect Programming(面向切面编程),是吧对象或固定的流程“切开”,找到其中的公共行为,并将其进行提取统一处理的一种思想。
AOP是依赖动态代理实现的。
AOP基本概念:
Aspect (切面):一个模块化的横切逻辑 (或称横切关注点),可能会横切多个对象
Advice (增强处理):切面在某个特定连接点上执行的代码逻辑。
Join Point (连接点):程序执行中的某个具体的执行点。
Pointcut (切入点): 对连接点的特征进行描述,可以使用正则表达式。增强处理和一个切入点表达式相关联,并在与这个切入点匹配的某个连接点上运行。
Target Object (目标对象): 被一个或多个切面增强的对象。AOPproxy (AOP 代理):由AOP 框架所创建的对象,实现执行增强处理方法等功能。
Weaving(织入):将增强处理连接到应用程序中的类型或对象上的过程。
增强处理:前置增强、后置增强、环绕增强、异常抛出增强、最终增强。
- 异常抛出增强:
- 环绕增强:
- 最终增强:
实现步骤:
- 引入依赖jar包
- 编写保存用户的业务代码以及用于增强处理的代码
- 编写Spring配置文件
(1)在 beans 元素中需要添加 aop 命名空间,以导入与AOP 相关的标签
(2)与AOP 相关的配置都放在 aop:config 标签中。
(3) <aop;pointcut>表示切入点,id 属性为该切入点的名称,expression 属性为该切入点的表达式cxecution 是切入点指示符,它的括号中是一个切入点表达式,可以配置需要切入增强处理的方法的特征切入点表达式支持模糊匹配。下面讲解几种常用的模糊匹配。
- public *addNewUser(entity.User):“*”表示匹配所有类型的返回值
- public void *(entity.User):“*”表示匹配所有方法名
- public void addNewUser(..):“..”表示匹配任意参数个数和类型
- *com.service.*.*(..):匹配 comservice 包下所有类的所有方法
- *com.service..*.*(.):匹配 com.service 包及其子包下所有类的所有方法
(4)<aop;aspec>引用增强的 Bean,ref属性指定增强 Bean 的名称
- <aop:before>声明前置增强,属性 pointcut-ref 表示引用的切入点
- <aop;after-returing>声明后置增强,pointcut-ref 属性表示引用的切入点,returning 属性表示需要注入返回值的属性名
(5)把增强处理插入切入点的过程称为织入,同学们可以理解为把衣服上的 Logo 使用针线织入衣服的过程。配置文件所涉及的工作可以总结为,把日志功能抽取为单独的类,并交由 Spring 管理,声明需要插入日志功能的位置,然后将日志功能代码织入指定位置。
依赖注入方式扩展
- 设值注入
-
构造注入
-
P命名空间注入
-
不同数据类型注入(空字符串和null、基本数据类型和字符串、集合和数组(List集合或数组、Set集合、Map集合、Bean))
使用注解实现Spring IoC
1.使用注解方式实现
2.Java标准注解完成装配
使用注解实现Spring AOP
1.使用注解方式标注切面
2.使用其他注解定义其他类型的增强