Spring Boot AOP和IOC

什么是AOP:面向切面编程

与OOP(面向对象的编程)对比,面向切面,传统的OOP开发中的代码逻辑都是至上而下的,在这些至上而下的过程中会产生一些横切性的问题,这些横切性的问题和我们的业务逻辑关系不大,会散落在代码的各个地方,造成难以维护,AOP的编程思想是把业务逻辑和横切的问题进行分离,从而达到解耦的目的,使代码的重用性和开发效率高。

AOP的应用场景

  • 日志记录
  • 权限验证
  • 效率检查
  • 事务管理

AOP底层技术
JDK动态代理
CGLIB代理

spring Aop和AspectJ的关系
连接点joinpoint:链接点目标对象中的方法
切点pointcut:切点表示链接打的集合

SpringBoot IOC :控制反转
控制反转是从容器的角度来说的,以前对象都是应用程序new出来的,对象之间的依赖也是应用程序自己创建的,从而导致类与类之间高耦合,难于测试。现在,由Spring管理bean的生命周期以及bean之间的关系,降低了业务对象替换的复杂性,提高了组件之间的解耦
SpringBoot AOP :面向切面的编程

  • 支持将公共业务提取出来(例如:安全/事务/日志)进行集中管理。
  • 使用AOP可以将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。
  • Spring中实现AOP的方式有三种,分别为,基于AspectJ 注解方式实现、基于Schema的xml配置、基于ProxyFactoryBean代理实现,但是底层都是基于动态代理实现的,动态代理有JDK动态代理和CGLIB动态代理,AOP默认使用的是 JDK动态代理

Spring 中的设计模式
工厂模式,单例模式,代理模式,包装器模式,适配器模式

  1. 工厂模式

     定义一个用于创建对象的接口,让子类决定实例化哪一个类。
    
     Spring中FactoryBean就是典型的工厂方法模式
    
  2. 单例模式

     保证一个类只有一个实例,并提供一个访问它的全局访问点。
    
     Spring的单例模式完成了后半句化,即提供了全局的访问点BeanFactory
    
  3. 包装器模式

    动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。

    Spring中用到的包装器模式在类名上有两种表现:一种是类名中含有Wrapper,另一种是类名中含有Decorator。基本上都是动态地给一个对象添加一些额外的职责。

  4. 代理模式

     为其他对象提供一种代理以控制对这个对象的访问。
    
     Spring的Proxy模式在aop中有体现,比如JdkDynamicAopProxy和Cglib2AopProxy。
    
  5. 适配器模式,HandlerAdapter

     将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
    
     Spring中在对于AOP的处理中有Adapter模式的例子,见如下图:
    

你可能感兴趣的:(springBoot,JAVA)