一、什么是Spring

  是由Rod Johnson开发的Spring框架。Spring可以说是一个非常活跃的开源框架,是基于IOC和AOP来架构多层JavaEE系统,以帮助分离项目组件之间的依赖关系。它的主要目的是为了简化企业开发。

二、Spring的组成

 核心模块:Beans,Core,Context,SpEL对应四个初始化项目时需要的四个核心包

 

spring 的基本概念 spring的四个含义_spring

三、核心概念

  IOC:Inversion of Control 控制反转

   IoC是为了降低对象之间的耦合关系的一种设计思想。通过IoC,开发人员就可以不需要关心对象的创建过程,直接交个Spring容器来完成。具体的过程就是程序读取Spring的配置文件,然后获取bean对象,通过反射机制创建对象的实例。

  但是IoC也有缺点就是对象是通过反射机制实例化出来的,所以对系统的性能会有影响。

 

 DI:Dependency Injection 依赖注入

  DI,就是创建对象实例的时候同时给这个对象注入它所依赖的属性。相当于就是把每个bean与bean之间的关系交给spring容器。

 就比如我们通常在Service层注入它所依赖的Dao层的实例;在Controller层注入Service层。

 AOP:Aspect Oriented Programming 面向切面编程

 面向切面编程就是通过预编译的方式和运行期动态代理实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分之间的耦合性降低,提高程序的可重用性,提高开发效率。

 AOP思想:横向重复,纵向抽取

 1.底层实现:

 Spring的AOP的底层用到了两种代理机制:

  •  JDK的动态代理:针对实现了接口的类产生代理
  •   Cglib的动态代理:针对的是没有实现接口的类产生代理,应用的是底层的字节码增强的技术,生成当前的子类的对象。

2.AOP的开发中的相关术语:

  •  Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接   点(可以被切入的点)
  • Pointcut(切入点) :所谓切入点是指我们要对哪些Joinpoint进行拦截的定义。(已经被切入的点)
  • Advice(通知/增强):所谓通知是指拦截到Joinpoint之后所要做的事情就是通知。通知分为前置通知后置通知和异常通知,最终通   知,环绕通知
  • Introduction(引介):引介是一种特殊的通知在不修改类代码的前提下,Introduction可以在运行期为类动态的添加一些方法   或Field.
  • Aspect(切面):是切入点和通知的结合
  •  Target(目标对象):代理目标对象
  •   Proxy(代理):一个类被AOP织入增强后,就产生了一个结果代理类
  •   Weaving(织入):是指把增强应用到目标对象来创建新的代理对象的过程。spring采用动态代理织入,而AspectJ采用编译器织入和   类装载期织入。