1 初识Spring框架
1.1 spring简介
- Spring是一个开源的轻量级的应用开发框架
其目的是用于<mark>简化</mark>企业级应用程序<mark>开发</mark>,降低开发者的开发难度;
(
<mark>简化开发</mark>:
spring对常用的api,
比如
对JDBC做了封装,使用spring封装的jdbc访问数据库,就不用考虑获取连接、关闭连接等,极大的简化了代码
) - Spring提供的IoC和AOP应用
可以将组件的耦合度降至最低(即<mark>解耦</mark>),<mark>便于系统日后的维护和升级</mark>; - 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,远程调用等提供了简便封装
Spring的本质是管理软件中的对象,即创建对象和维护对象之间的关系
1.2 spring架构 ∗∗∗
<mark>Spring 最初的目标就是要整合一切优秀资源,然后对外提供一个统一的服务</mark>。
俯视图 ∗∗∗
Spring 模块构建在核心容器(spring core
)之上,核心容器定义了创建、配置和管理 bean 的方式,如下图所示:
<mark>组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现</mark>。
模块功能 ∗∗∗
每个模块的功能如下:
模块 | 说明 | |
---|---|---|
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服务器中,大多数功能也适用于不受管理的环境。
Spring的核心要点是:
<mark>支持不绑定到特定J2EE服务的可重用业务和数据访问对象</mark>。
毫无疑问,这样的对象可以在不同J2EE环境(Web或EJB)、独立应用程序、测试环境之间重用。
核心组件 ∗∗∗
模块 | 说明 | |
---|---|---|
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组成 ∗∗∗
模块 | 说明 | |
---|---|---|
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 |