Java Web之初识Spring

1. 为什么会有Spring?

  • 在程序开发中,一个完整的应用程序是由一组相互协作的对象组成的,我们需要控制这些对象的创建,协调对象之间的依赖关系,而且要尽可能做到高内聚、低耦合,光是做到这些就会花费很大的成本,而Spring框架就是为了帮助我们管理对象及其依赖关系而生的,此外还提供了事务、日志记录、安全控制、异常处理等面向切面的能力;

2. Spring的核心思想:IOC与AOP

  • Spring中有两个重要的概念就是控制反转(IOC)面向切面(AOP)

  • IOC的基本概念是:不直接在代码中创建对象,仅仅声明创建它们的方式,通过配置文件或注解描述它们的创建方式,最后由Spring IOC容器管理对象的创建及其依赖关系。其中,BeanFactory接口(Bean工厂)是Spring IOC容器的基础,它是工厂模式的实现,允许通过名称创建和查找对象以及管理对象之间的依赖关系,BeanFactory底层支持两种对象模型:

     1. 单例模型:提供了全局唯一实例对象,是默认的,最常用的模型;
     2. 原型模型:每一次获取都会创建新的实例对象;
    
  • AOP即面向切面编程,是IOC的补充技术,核心概念是:将影响多个类的行为封装到可重用的模块中。比如:将每个对象的执行过程作为日志记录下来,传统办法需要将日志语句放到每个类的每个方法中,使得代码十分臃肿,通过AOP的方式将日志服务抽象出来,并以声明的方式应用要需要日志的对象上以达到解耦的效果。

     - AOP的常见应用场景有:权限认证、日志、异常捕获、事务等。
    

3. Spring的构成

3.1 核心容器模块

  • 核心容器模块由spring-beans、spring-core、spring-context以及 spring-expression组成;
  • spring-beans和spring-core包含了控制反转和依赖注入,BeanFactory控制着Bean(对象)的创建,当BeanFactory创建后不会直接实例化所有的Bean,只有当某个Bean被使用到时,BeanFactory才会对该Bean进行实例化。
  • spring-context是对BeanFactory的扩展,为BeanFactory添加了Bean生命周期控制,ApplicationContext是该模块的接口,它的父类是BeanFactory,与BeanFactory不同,ApplicationContext创建后会直接对所有的Bean进行实例化。
  • spring-expression模块可以查询、管理运行中的对象,也可以方便地调用对象方法等。

3.2 AOP和设备支持模块

  • AOP和设备支持模块由spring-aop、spring-aspects、spring-instrument等3个模块组成;
  • spring-aop以JVM的动态代理技术为核心,设计出环绕通知、前置后置通知、返回通知、异常通知等实现;
  • spring-aspects主要为Spring提供多种AOP实现方法;
  • spring-instrucment的主要作用是在JVM启动时生成一个代理类,我们可以通过代理类在运行时修改类的字节,从而改变一个类的功能;

3.3 数据访问和集成模块

数据访问和集成模块由spring-jdbc、spring-tx、spring-orm、spring-oxm、spring-jms等5个模块组成。

  • spring-jdbc用于简化JDBC操作;
  • spring-tx用于控制JDBC事务;
  • spring-orm用于DAO的实现和事务策略;
  • spring-oxm用于映射XML数据;
  • spring-jms能够发送和接受消息;

3.4 Web组件模块

Web组件由spring-web、spring-webmvc、spring-websocket、spring-webflux等4个模块组成。

  • spring-web模块通过Servlet和Listeners来初始化IOC容器;
  • spring-webmvc实现了Spring MVC;
  • spring-websocket是与Web前端进行全双工同心度额协议;
  • spring-webflux是一个用来建议异步非阻塞的响应式框架;

3.5 集成测试模块

  • spring-test模块,主要给测试提供支持;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章