建设网站需要的技术指标,wordpress wpyou,wordpress添加登入,自做网站的步骤Spring#xff1a;IOC和AOP一. IOC(1) 引入(2) 定义(3) 作用(4) 实现(5) DI依赖注入二. AOP(1) 概念(2) Spring中的AOP(3) 入门案例0. 准备#xff1a;1. 定义通知类和通知方法#xff1b;2. 在通知类中描述和定义切入点 pointcut3. 用注释绑定切入点和通知方法4. 通知类IOC和AOP一. IOC(1) 引入(2) 定义(3) 作用(4) 实现(5) DI依赖注入二. AOP(1) 概念(2) Spring中的AOP(3) 入门案例0. 准备1. 定义通知类和通知方法2. 在通知类中描述和定义切入点 pointcut3. 用注释绑定切入点和通知方法4. 通知类Component Aspect5. SpringConfigEnableAspectJAuotoProxy(4) AOP的运行流程(5) AOP案例测量业务层接口万次执行效率IOC(控制反转)和AOP(面向方面编程)作为Spring框架的两个核心可以很好地实现解耦合。 简单来说Spring是一个轻量级的控制反转IoC和面向切面AOP的容器框架。
一. IOC
(1) 引入
如以前都是在【业务层】实例化【持久层】对象耦合性强 当持久层代码变动时业务层代码也要改变 所以有了IOC控制反转即由IOC容器将持久层的对象注入到业务层
(2) 定义
控制反转即主动变成被动 IOC控制反转即 主动new对象 变成由于 外部(IOC容器)去提供对象被IOC容器所管理的对象也被称为 bean
(3) 作用
解耦合如果dao层有变化则不需要改变service层代码
(4) 实现
Spring技术对IOC思想进行了实现 Spring提供了Core Container容器称为IOC容器用来充当IOC思想中的外部 即在Spring中IOC可以理解为由主动new对象转换为由IOC容器提供对象 IOC会管理大量的对象用到了 反射机制 ,根据路径名获取类文件进而完成对象创建创建对象调用的是无参构造 IOC会管理对象的创建和初始化的过程 IOC容器负责对象的创建、初始化等一些列工作被创建或管理的对象在IOC容器中统称为 Bean
(5) DI依赖注入
在容器中建立Bean与Bean之间的依赖关系的过程称为依赖注入 Spring通过DI依赖注入实现IOC控制反转
效果在需要使用Service对象时里面的dao对象就已经由IOC容器生成并注入了
目标充分解耦
总结
IOC 用对象的时候不用程序去new而是由IOC容器提供DI当IOC中的Bean有关系时会绑定依赖
二. AOP
(1) 概念
AOP可以说是对OOP(面向对象编程) 的补充和完善
面向对象就是将事物的特性和行为抽象为一个对象如people类有身高、体重、年龄等属性也有吃饭、睡觉等行为。把这些特性和行为封装成一个类然后可以统一调用。
AOP(面向切面编程) 就是把一个单独的业务功能抽取出来然后动态把这个功能切入到需要的方法或行为中 即将功能先定义好需要的地方才切入这样便于减少系统的重复代码降低模块间的耦合度。
作用 ①降低耦合度 ②不改变原有代码的基础下增加新功能
Spring AOP就是基于动态代理实现的动态代理又利用了反射机制
使用场景 如果有相同的、大量使用的功能在很多地方增强适合AOP------------即简化共性功能的开发
(2) Spring中的AOP
Spring理念无侵入式编程即不改变原有代码的基础上为其增加新的功能(使用了动态代理) AOP将业务逻辑组件和切面类都加入到容器中通过Aspect通知注解给切面类的目标方法标注在哪运行。
连接点所有的原始方法
切入点Pointcut需要被功能来增强的方法特殊的连接点
通知advice即抽取出来的增强的功能
切面绑定通知和切入点的关系一个通知对应一个切入点 总结 抽取程序中要增强的部分作为一个通知方法 执行对应通知的方法就是切入点 将通知和切入点绑定的就是切面切面就是描述在哪个切入点上执行哪些通知
(3) 入门案例
需求不改变切入点代码的前提下执行update()时也打印系统时间
思路分析 1.导入AOP和Aspect的坐标 2.准备连接点原始方法 3.制作共性功能------通知和通知类 4.定义切入点Pointcut 5.绑定通知方法和切入点切面
0. 准备
BookDao
BookDao实现类 目前只有执行save()方法才会打印系统时间 导入aop和aspect包 aop包默认依赖于spring-context所以只需要导aspectjweaver包
1. 定义通知类和通知方法 2. 在通知类中描述和定义切入点 pointcut
用切入点表达式定义切入点使用 Pointcut ①在Execution中描述实际的切入点方法切入点表达式 ②定义一个私有方法pt空壳代表切入点
3. 用注释绑定切入点和通知方法
此处让通知方法在切入点的前面执行用Before 括号中写定义的切入点的私有方法pt() 此处通知方法即打印当前时间 此处的切入点即update()方法
4. 通知类Component Aspect
要能让Spring控制先用Componet将通知类定义为bean 然后用Aspect让通知类中的东西生效让Spring知道这是AOP
5. SpringConfigEnableAspectJAuotoProxy
告诉Spring这里用了注解开发的AOP即去启动了Aspect而Aspect告诉Spring去识别通知类 效果执行update也会打印系统时间
(4) AOP的运行流程
1.启动 Spring容器
2.读取 所有【切面配置】中的pointcut切入点
3.初始化 bean; 判定 bean对应的类如BookDaoImpl中的原始方法如update是否匹配到【通知类中】配置的切入点 ※ 匹配成功创建原始对象即目标对象的代理对象
4.获取bean执行方法 当匹配成功获取的bean是代理对象则用代理对象去调用原始方法与通知方法 即用代理对象去调用对应的方法update然后走增强的通知方法的操作
整个AOP的实现过程是由代理模式来进行的
总结如果配置的切入点能和类BookDaoImpl的方法匹配上那么就创建代理对象用代理对象去调用原始方法和增强的通知方法 否则就只创建原始对象
(5) AOP案例测量业务层接口万次执行效率
AOP案例测量业务层接口万次执行效率