SSM框架

Spring

定义

Spring是分层的Java SE/EE应用一站式的轻量级开源框架,以IoC(Inverse of Control 反转控制)AOP(Aspect Oriented Programming 面向切面编程)为内核,提供了展现层:Spring MVC持久层:Spring JDBC以及业务层:事务管理等众多的企业级应用技术。

  • Spring容器,它通过配置文件或注解描述类和类之间的依赖关系,自动完成类的初始化和依赖注入的工作。
  • Java反射技术是Spring实现依赖注入的Java底层技术。
  • Spring通过一个配置文件描述Bean及Bean之间的依赖关系,利用Java语言的反射功能实例化Bean并建立Bean之间的依赖关系。

相关概念

  • IoC/DI
    • IoC: 控制反转(Inverse of Control),是Spring容器的内核,其作用是将某一接口具体实现类的选择控制权从调用类中移除,转交给第三方决定。
      • 控制:是接口实现类的选择控制权;
      • 反转:是指选择控制权从调用类转移到外部第三方类或容器的手中。
    • DI:依赖注入(Dependency Injection)的概念与IoC相同,即让调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入,以移除调用类对某一接口实现类的依赖。
    • 从注入方法上看,主要可以划分为三种类型:构造函数注入、属性注入和接口注入。
  • BeanFactory & ApplicationContext
    • BeanFactory:Bean工厂是Spring框架最核心的接口,它提供了高级Ioc的配置机制,使管理不同类型的Java对象成为可能。我们一般称BeanFactory为IoC容器。
      • BeanFactory是Spring框架的基础设施,面向Spring本身;
      • BeanFactory是类的通用工厂,它可以创建并管理各种类的对象;
      • 它最主要的方法是getBean(String beanName),该方法从容器中返回特定名称的Bean;
    • ApplicationContext:应用上下文建立在BeanFactory基础之上,提供了更多面向应用的功能,它提供了国际化支持和框架事件体系,更易于创建实际应用。
      • ApplicationContext 面向使用Spring框架开发者,几乎所有的应用场景我们都直接使用ApplicationContext而非底层的BeanFactory;
      • ApplicationContext由BeanFactory派生而来;
      • ApplicationContext的主要实现类是ClassPathXmlApplicationContext 和FileSystemXmlApplicationContext,前者默认从类(classpath)路径加载配置文件,后者默认从文件(file)系统中装载配置文件。
    • 初始化时的区别
      • BeanFactory在初始化容器时,并未实例化Bean,直到第一次访问某个Bean时才实例目标Bean;
      • ApplicationContext在初始化应用上下文时就实例化所有单实例的Bean。
      • 因此ApplicationContext的初始化时间会比BeanFactory稍长一些,不过稍后的调用则没有第一次惩罚的问题。
  • AOP相关
    • 定义:AOP是Aspect Oriented Programming的简称,即“面向切面编程”。它一般只适合于具有横切逻辑的应用场合:如性能监测、访问控制、事务管理以及日志记录
    • AOP术语
      • 连接点(Joinpoint):程序执行的某个特定位置。
        • 一个类或一段程序代码拥有一些具有边界性质的特定点,这些代码中的特定点就称为“连接点”。如:方法调用前、调用后、方法抛出异常时等。
        • 连接点由两个信息确定:第一是用方法表示的程序执行点;第二是用相对点表示的方位
      • 切点(Pointcut):AOP通过“切点”定位特定连接点。
        • 切点和连接点不是一对一的关系,一个切点可以匹配多个连接点。
        • 切点通过org.springframework.aop.Pointcut接口进行描述,它使用类和方法作为连接点的查询条件。
        • 切点只定位到某个方法上,如果希望定位到具体的连接点上,还需要提供方位信息,如:方法前、方法后、方法抛出异常时。
      • 增强(Advice):增强是织入到目标类连接点上的一段程序代码。
        • 增强包含了用于添加到目标连接点上的一段执行逻辑,也包含了用于定位连接点的方位信息。所以增强接口都是带有方位名:BeforeAdviceAfterReturningAdviceThrowsAdvice等。
        • 只有结合增强切点才能确定特定的连接点并实施增强逻辑。由切点找到连接点相关的类或方法,再加上增强包含的方位信息确定特定的连接点,然后执行相应的增强逻辑。
      • 目标对象(Target):增强逻辑的织入目标类。
      • 引介(Introduction):引介是一种特殊的增强,它为类添加一些属性和方法。
      • 织入(Weaving):织入是将增强添加到目标类具体连接点上的过程。
        • 根据不同的实现技术,AOP有三种织入的方式:
          • 编译期织入,这要求使用特殊的Java编译器;
          • 类装载期织入,这要求使用特殊的类装载器;
          • 动态代理织入,在运行期为目标类添加增强生成子类的方式。
        • Spring 采用动态代理织入;AspectJ采用编译期织入和类加载期织入。
      • 代理(Proxy):一个类被AOP织入增强后,就产生了一个结果类,它是融合了原类和增强逻辑的代理类。根据不同的代理方式,代理类既可能是和原类具有相同接口的类,也可能就是原类的子类。
      • 切面(Aspect):切面由切点和增强(引介)组成,它既包括了横切逻辑(Advice)的定义,也包括了连接点(Joinpoint)定义。
    • AOP总结:
      • Spirng AOP是负责实施切面的框架,它将切面所定义的横切逻辑织入到切面所指定的连接中。
      • AOP的工作重心在于如何将增强应用于目标对象的连接点上,这主要包括两个工作:第一,如何通过切点和增强定位到连接点上;第二,如何在增强中编写切面的代码。

Spring MVC

定义

  • Spring MVC 是展现层的一种Web框架,它与 Struts、WebWork等MVC框架类似。
  • Spring MVC 框架围绕DispatcherServlet这个核心展开,它负责截获请求并将其分派给相应的处理器处理;负责协调和组织不同组件以完成请求处理并返回响应的工作。
  • Spring MVC 是基于Model 2实现的技术框架,Model 2 基于经典的MVC(Model,View,Control)模型,其利用处理器分离模型、视图和控制,达到不同技术层级松散耦合的效果,提高系统灵活性、复用性和可维护性。

MyBatis

定义

  • MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。类似于Hibernate.
  • MyBatis摒除了大部分的JDBC代码、手工设置参数和结果集重获。
  • MyBatis只使用简单的XML和注解来配置和映射基本数据类型、Map接口和POJO到数据库记录。
  • 每一个MyBatis 应该都是以一个SqlSessionFactory实例为中心。一个 SqlSessionFactory实例可以使用SqlSessionFactoryBuilder来创造。 从配置类中创造的定制SqlSessionFactoryBuilder实例, 可以使用XML配置文件来生成一个SqlSessionFactory实例.

你可能感兴趣的:(SSM框架)