什么是 IoC
IoC (Inversion of control )控制反转/反转控制。它是一种思想不是一个技术实现。描述的是:Java 开发领域对象的创建以及管理的问题。
IOC名词解释,作用是解耦,使用IOC容器管理项目组件之间的耦合关系
IOC( Inversion of Control,中文释义:控制反转 ) 是Spring框架的核
心思想之一,主要用于解耦。IOC是指将创建对象的控制权转移给Spring框架进行
管理。由Spring框架根据配置文件或注解等方式,创建bean对象并管理各个bean
对象之间的依赖关系。使对象之间形成松散耦合的关系,实现解耦;
IoC 解决了什么问题
IoC 的思想就是两方之间不互相依赖,由第三方容器来管理相关资源。这样有什么好处呢?
- 对象之间的耦合度或者说依赖程度降低;
- 资源变的容易管理;比如你用 Spring 容器提供的话很容易就可以实现一个单例。
使用 IoC 的思想,我们将对象的控制权(创建、管理)交有 IoC 容器去管理,我们在使用的时候直接向 IoC 容器 “要” 就可以了
IoC 和 DI 的区别 IoC(Inverse of Control:控制反转)是一种设计思想 或者说是某种模式。这个设计思想就是 将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理。 IoC 在其他语言中也有应用,并非 Spring 特有。IoC 容器是 Spring 用来实现 IoC 的载体, IoC 容器实际上就是个 Map(key,value),Map 中存放的是各种对象。
IoC 最常见以及最合理的实现方式叫做依赖注入(Dependency Injection,简称 DI)。
DI注入的数据类型:
1.注入对象
2.注入基本类型与String
3.复杂类型list arry set map properties
什么是 AOP
AOP:Aspect oriented programming 面向切面编程,AOP 是 OOP(面向对象编程)的一种延续
AOP(Aspect-Oriented Programming: 面向切面编程):将那些与业务无关,
却为业务模块所共同调用的逻辑(例如事务处理、日志管理、权限控制等)封装抽
取成一个可重用的模块,这个模块被命名为“切面”(Aspect),便于减少系统的
重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性;
Spring AOP 基于动态代理实现:
○ 如果被代理的对象,已经实现某个接口,则 Spring AOP 会使用 JDK Proxy(反射),基于接口的方式,创建代理对象(JDK动态代理的核心是InvocationHandler接口和Proxy类);
○ 如果被代理的对象,没有实现某个接口,就无法使用 JDK Proxy 去进行代理了,这时候 Spring AOP 会使用 Cglib,基于继承的方式,生成一个被代理对象的子类来作为代理(Cglib动态代理的核心是MethodInterceptor接口和Enhancer类);
AOP通知类型:需要增强的代码以及何时执行 前置通知,返回通知,环绕通知,后置通知,异常通知 AOP连接点 AOP切点 AOP织入:将通知添加到切点的过程 AOP切面:切点+通知
AOP通知类型
AOP将抽取出来的共性功能称为通知;通知类型:以通知在上下文中的具体位置作为划分
前置通知(Before)
后置通知(After)
返回通知(After-returning)
异常通知(After-throwing)
环绕通知(Around)
AOP连接点(Join point)
AOP将所有的方法都视为连接点,不管是接口里面的抽象方法,还是实现类里面的重写方法,都是连接点
AOP切点(Pointcut)
AOP将可能被抽取共性功能的方法称为切入点。切入点是连接点的子集
AOP目标对象(Target): 就是挖掉功能的方法对应的类生的对象,这种对象是无法直接完成最终工作的
AOP织入(Weaving):就是将挖掉的功能回填的动态过程
AOP切面:切点+通知
总结AOP开发过程:
●开发阶段(开发者完成)===========我们自己做
◆正常的制作程序
◆将非共性功能开发到对应的目标对象类中,并制作成切入点方法
◆将共性功能独立开发出来,制作成“通知”
◆在配置文件中,声明“切入点”
◆在配置文件中,声明"切入点"与"通知"间的关系(含通知类型),即"切面"
●运行阶段(AOP完成)=============spring帮我们做的
◆Spring容器加载配置文件,监控所有配置的“切入点”方法的执行
◆当监控到“切入点”方法被运行,使用“代理”机制,动态创建“目标对象”的“代理对象”,
根据“通知类别”,在“代理对象”的对应位置将“通知”对应的功能“织入”,完成完整的代码逻辑并运行文章来源:https://www.toymoban.com/news/detail-631643.html
文章来源地址https://www.toymoban.com/news/detail-631643.html
到了这里,关于springIoc与Aop的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!