Java培优班 - 第三十五天 - spring框架 - 俯视图、模块功能、核心组件、jar包组成 -【可查】
1 初识Spring框架
1.1 spring简介
-
Spring是一个开源的轻量级的应用开发框架
其目的是用于简化企业级应用程序开发,降低开发者的开发难度;
(
简化开发:
spring对常用的api,
比如
对JDBC做了封装,使用spring封装的jdbc访问数据库,就不用考虑获取连接、关闭连接等,极大的简化了代码
) -
Spring提供的IoC和AOP应用
可以将组件的耦合度降至最低(即解耦),便于系统日后的维护和升级; -
Spring为系统提供了一个整体的解决方案
开发者可以利用它本身提供的功能外
也可以与第三方框架和技术整合应用,
可以自由选择采用哪种技术进行开发。
(
比如
Spring整合SpringMVC、
Spring整合MyBatis、
Spring整合Struts2、
Spring整合Hibernate、
Spring整合Quartz[定时任务处理]
)
总结:为什么要使用Spring?
- .方便解耦,简化开发
通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。 - .AOP编程的支持
通过Spring提供的AOP功能,方便进行面向切面的编程,如性能监测、事务管理、日志记录等。 - 声明式事务的支持
- 方便集成各种优秀框架
-
降低Java EE API的使用难度
如对JDBC,JavaMail,远程调用等提供了简便封装
1.2 spring架构
Spring 最初的目标就是要整合一切优秀资源,然后对外提供一个统一的服务。
俯视图
Spring 模块构建在核心容器(spring core
)之上,核心容器定义了创建、配置和管理 bean 的方式,如下图所示:
组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。
模块功能
每个模块的功能如下:
模块 | 说明 | |
---|---|---|
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服务器中,大多数功能也适用于不受管理的环境。
:
支持不绑定到特定J2EE服务的可重用业务和数据访问对象。
毫无疑问,这样的对象可以在不同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 |
松耦合方式实现对象直接的依赖 |
5. | AOP面向切面编程 |
补充java面向对象的不足 |
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 |