Java培优班 - 第三十五天 - spring框架 - 俯视图、模块功能、核心组件、jar包组成 -【可查】


1 初识Spring框架

1.1 spring简介

  1. Spring是一个开源的轻量级的应用开发框架
    其目的是用于简化企业级应用程序开发,降低开发者的开发难度;
    (
    简化开发
    spring对常用的api,
    比如
    对JDBC做了封装,使用spring封装的jdbc访问数据库,就不用考虑获取连接、关闭连接等,极大的简化了代码
    )
  2. Spring提供的IoC和AOP应用
    可以将组件的耦合度降至最低(即解耦),便于系统日后的维护和升级
  3. Spring为系统提供了一个整体的解决方案
    开发者可以利用它本身提供的功能外
    可以与第三方框架和技术整合应用,
    可以自由选择采用哪种技术进行开发。

    比如
    Spring整合SpringMVC、
    Spring整合MyBatis、
    Spring整合Struts2、
    Spring整合Hibernate、
    Spring整合Quartz[定时任务处理]

总结:为什么要使用Spring?

  • .方便解耦,简化开发
    通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。
  • .AOP编程的支持
    通过Spring提供的AOP功能,方便进行面向切面的编程,如性能监测、事务管理、日志记录等。
  • 声明式事务的支持
  • 方便集成各种优秀框架
  • 降低Java EE API的使用难度
    如对JDBC,JavaMail,远程调用等提供了简便封装

Spring\color{#f01}{Spring的本质是管理软件中的对象,即创建对象和维护对象之间的关系}

1.2 spring架构\color{#f01}{***}

Spring 最初的目标就是要整合一切优秀资源,然后对外提供一个统一的服务

俯视图\color{#f01}{***}

Spring 模块构建在核心容器(spring core)之上,核心容器定义了创建、配置和管理 bean 的方式,如下图所示:

Java培优班 - 第三十五天 - spring框架 - 俯视图、模块功能、核心组件、jar包组成 -【可查】

组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现

模块功能\color{#f01}{***}

每个模块的功能如下:

模块 说明
1. 核心容器Spring Core 核心容器,提供Spring框架的基本功能
核心容器的主要组件是BeanFactory,它是工厂模式的实现。
BeanFactory使用控制反转(IOC)模式,将应用程序的配置和依赖性规范与实际的应用程序代码分开。
2. Spring Context Spring上下文,是一个配置文件,向 Spring 框架提供上下文信息
Spring 上下文包括企业服务,
例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
3. Spring AOP 通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring框架中。
可以很容易地使 Spring框架管理的任何对象支持AOP
Spring AOP模块为基于 Spring 的应用程序中的对象提供了事务管理服务。
通过使用 Spring AOP,就可以将声明性事务
管理集成到应用程序中。
4. Spring DAO JDBC DAO 抽象层提供了有意义的异常层次结构,
可用该结构来管理异常处理和不同数据库供应商抛出的错误消息

异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量
(例如打开和关闭连接)。
Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
5. Spring ORM Spring 框架插入了若干个 ORM 框架,
从而提供了 ORM 的对象关系工具

其中包括JDO、Hibernate和iBatis SQL Map。
所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
6. Spring Web Web上下文模块建立在应用程序上下文模块之上,
为基于 Web 的应用程序提供了上下文

所以Spring 框架支持与 Jakarta Struts的集成。
Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
7. Spring MVC框架 MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现
通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,
其中包括 JSP、Velocity、Tiles、iText 和 POI。

Spring 框架的功能可以用在任何J2EE服务器中,大多数功能也适用于不受管理的环境。

Spring\color{#f01}{Spring 的核心要点是}
支持不绑定到特定J2EE服务的可重用业务和数据访问对象

毫无疑问,这样的对象可以在不同J2EE环境(Web或EJB)、独立应用程序、测试环境之间重用。

核心组件\color{#f01}{***}

模块 说明
1. BeanFactory Spring内部使用,创建bean的工厂
2. ApplicationContext 外部应用程序调用,也成为spring容器的上下文
3. IoC控制反转
Inversion of Control
开发者在无需自己new对象,无需关心对象的创建过程
User user = new User(); -------------------- 手动创建对象
User user = context.getBean(user); ----- 容器创建对象
4. DI依赖注入
Dependency Injection
松耦合方式实现对象直接的依赖
5. AOP面向切面编程 补充java面向对象的不足

1.3 主要jar组成 \color{#f01}{***}

模块 说明
1. org.springframework.core 核心工具包,其他包依赖此包
2. org.springframework.beans 核心,包括:配置文件,创建和管理bean等
3. org.springframework.aop 面向切面编程,提供AOP的实现
4. org.springframework.context 提供IoC功能上的扩展服务,此外还提供许多企业级服务的支持,邮件、任务调度、JNDI定位、EJB集成、远程访问、缓存以及多种视图层框架的支持
5. org.springframework.web.mvc 包含SpringMVC应用开发时所需的核心类
6. org.springframework.transaction 为JDBC、Hibernate、JDO、JPA提供一致的声明式和编程式事务管理
7. org.springframework.web 包含Web应用开发时所需支持类
8. org.springframework.aspects 提供对AspectJ框架的支持
9. org.springframework.test 对junit等测试框架的简单封装
10. org.springframework.asm 3.0后提供自己独立的,反编译
11. org.springframework.context.support Context的扩展支持,用于mvc方面
12. org.springframework.expression Spring表达式语言
13. org.springframework.instument 对服务器的代理接口
14. org.springframework.jdbc 对jdbc的简单封装
15. org.springframework.jms 为简化jms api的使用而做的简单封装
16. org.springframework.orm 整合第三方orm,如hibernate/mybatis
17. org.springframework.web.servlet 增强servlet