01-Summary

  1. Spring是分层的全栈式的轻量级开发框架,IOC和AOP为核心
  2. Spring官网open in new window
  3. 版本情况
image-20221004205931967

1. 优势

  1. 方便解耦,简化开发
    • Spring通过容器,将对象创建从代码中剥离出来,进行控制
    • 避免直接编码造成模块之间耦合度高,不必自己编码处理对象的单例和多例控制,主要关注接口功能即可,不用关注具体使用哪个实现类和实现细节问题
  2. AOP切面编程
    • 程序设计的一种概念,Spring对该概念实现的比较好,通过切面编程可以在不修改原代码的情况下实现功能的增加
    • 通常用于事务控制、日志记录、性能检测、权限控制等等
  3. 声明式事务
    • 事务控制可以托管给Spring,通过注解或者配置文件声明事务即可,不用自己编码处理
  4. 整合Junit,方便测试
    • Spring整合Junit单元测试,对于项目功能可以进行轻松快速测试,便于调试程序
  5. 整合各种优秀框架
    • SSM => Spring + SpringMVC + MyBatis
    • SSH => Spring + Hibernate + Struts
  6. 丰富的功能封装
    • 对JavaEE(JDBC、JavaMail)都进行了一系列的封装,简化我们对于API的使用,提高程序开发效率
  7. 规范的源码学习样本
    • 源码设计巧妙,结构清晰,大量使用设计模式,是java代码规范编写的典范,也是高级程序员面试中经常会问到的源码

2. 体系结构

image-20221004205949807

1. Data_Access/Integration

数据访问/集成

  1. JDBC模块:提供了JDBC的抽象层,大幅度减少了开发过程中对数据库操作的编码
  2. ORM模块:对流行的对象关系映射API,包括JPA、JDO、Hibernate、iBatis提供了集成层
  3. OXM模块:提供了一个支持对象XML映射的抽象层实现。eg:JAXB、Castor、XMLBeans、JiBX、XStream
  4. JMS模块:指Java消息服务,包含的功能为生产和消费的信息
  5. Transactions模块:支持编程和声明式事务管理

2. Web

包括Web、Servlet、Struts、Portlet组件

  1. Web模块:提供了基本Web开发集成特性。eg:多文件上传功能、Servlet监听器、IOC容器初始化、Web应用上下文
  2. Servlet模块:包括Spring模型—视图—控制器(MVC)实现Web应用程序
  3. Struts模块:包含支持类内的Spring应用程序,集成了经典的Struts_Web层
  4. Portlet模块:提供了在Portlet环境中使用MVC,类似Web-Servlet模块功能

3. Core_Container

核心容器是其他模块建立的基础,Beans、Core、Context、Expression_Language模块组成

  1. Beans:提供了BeanFactory,是工厂模式的经典实现,Spring将管理对象称为Bean
  2. Core核心模块:提供了Spring框架的基本组成部分,包括IOC和DI功能
  3. Context上下文模块:建立在Core和Beans模块的基础之上,它是访问定义和配置任何对象的媒介。ApplicationContext接口是上下文模块的焦点
  4. Expression_Language模块:运行时查询和操作对象的强大的表达式语言

4. 其他模块

  1. AOP:提供了面向切面编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以降低耦合性
  2. Aspects:提供与AspectJ的集成,是一个功能强大且成熟的面向切面编程(AOP)框架
  3. Instrumentation:提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用
  4. Test:支持Spring组件使用JUnit、TestNG