1 初识Spring框架

1.1 spring简介

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

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

总结:为什么要使用Spring?

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

<mstyle mathcolor="&#35;f01"> S p r i n g </mstyle> \color{#f01}{Spring的本质是管理软件中的对象,即创建对象和维护对象之间的关系} Spring

1.2 spring架构 <mstyle mathcolor="&#35;f01"> </mstyle> \color{#f01}{***}

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

俯视图 <mstyle mathcolor="&#35;f01"> </mstyle> \color{#f01}{***}

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

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

模块功能 <mstyle mathcolor="&#35;f01"> </mstyle> \color{#f01}{***}

每个模块的功能如下:

模块 说明
1. 核心容器Spring Core <mark>核心容器,提供Spring框架的基本功能</mark>。
核心容器的主要组件是BeanFactory,它是工厂模式的实现。
BeanFactory使用控制反转(IOC)模式,将应用程序的配置和依赖性规范与实际的应用程序代码分开。
2. Spring Context <mark>Spring上下文,是一个配置文件,向 Spring 框架提供上下文信息</mark>。
Spring 上下文包括企业服务,
例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
3. Spring AOP 通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring框架中。
可以很容易地使 Spring框架管理的任何对象支持AOP
<mark>Spring AOP模块为基于 Spring 的应用程序中的对象提供了事务管理服务。
<mark>通过使用 Spring AOP,就可以将</mark>声明性事务</mark>管理集成到应用程序中。
4. Spring DAO <mark>JDBC DAO 抽象层提供了有意义的异常层次结构,
可用该结构来管理异常处理和不同数据库供应商抛出的错误消息</mark>。
异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量
(例如打开和关闭连接)。
Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
5. Spring ORM <mark>Spring 框架插入了若干个 ORM 框架,
从而提供了 ORM 的对象关系工具</mark>,
其中包括JDO、Hibernate和iBatis SQL Map。
所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
6. Spring Web <mark>Web上下文模块建立在应用程序上下文模块之上,
为基于 Web 的应用程序提供了上下文</mark>。
所以Spring 框架支持与 Jakarta Struts的集成。
Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
7. Spring MVC框架 <mark>MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现</mark>。
通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,
其中包括 JSP、Velocity、Tiles、iText 和 POI。

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

<mstyle mathcolor="&#35;f01"> S p r i n g </mstyle> \color{#f01}{Spring 的核心要点是} Spring
<mark>支持不绑定到特定J2EE服务的可重用业务和数据访问对象</mark>。

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

核心组件 <mstyle mathcolor="&#35;f01"> </mstyle> \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
<mark>松耦合方式实现对象直接的依赖</mark>
5. AOP面向切面编程 <mark>补充java面向对象的不足</mark>

1.3 主要jar组成 <mstyle mathcolor="&#35;f01"> </mstyle> \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