spring 概述

spring 

  1、容器:整合其它框架,将bean纳入容器中。

  2、使用IOC解耦合。

    Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。

    Dependency Injection,即“依赖注入”:组件之间依赖关系。

    旧的方式:每个对象负责管理与自己互相协作的对象,如:Action中,需要的Service对象,都需要自己创建(代码耦合度高)。

    spring的IOC:所有的对象,都在spring容器中创建;对象间的关系,用DI进行关联。配合接口开发模式进行使用,当需要修改Service的具体实现时,不再需要修改Action中的代码,修改注解或者修改配置文件即可实现。

  3、使用AOP处理事务。

     spring AOP 只支持方法连接点。

    AspectJ、JBoss支持方法、构造器、字段的连接点,功能更强大。

一、IOC(Inversion of Control,控制反转)(Dependency Injection,依赖注入DI):
  由spring来控制对象的生命周期和对象间的依赖关系。
  参考:https://www.cnblogs.com/ITtangtang/p/3978349.html


二、AOP(Aspect Oriented Programming,面向切面编程)
  参考:https://www.cnblogs.com/xrq730/category/941473.html

  spring 动态代理的实现:
    JDK: InvocationHandler,Proxy
    cglib:MethodInterceptor,Enhancer

    spring aop的原理:
      默认使用JDK动态代理技术。
      为什么使用JDK作为默认的代理技术?
      1、创建代理类速度:JDK使用面向接口编程,而cglib使用继承父类动态生成字节码技术,因此JDK创建代理的速度更快。
       2、运行速度:cglib直接调用父类的被代理方法,而JDK需要使用反射调用被代理类的方法,所以运行速度cglib更快。


三、三级缓存(解决循环依赖问题)

  https://www.jianshu.com/p/6c359768b1dc

原文地址:https://www.cnblogs.com/chen--biao/p/9765441.html