Web开发 | Spring4 - 01.Spring的概述

一、什么是 Spring

Spring 是分层的、JavaSE/EE一站式(full-stack)、轻量级开源框架。

分层

JavaEE 规范的三层结构体系:
  表现层(页面数据显示、页面跳转调度),例如 jsp/servlet
  业务层(业务处理和功能逻辑、事务控制),例如 service
  持久层(数据存取和封装、和数据库打交道),例如 dao

JavaEE体系结构
JavaEE体系结构

一站式

Spring 提供了 JavaEE 各层的解决方案:
  表现层:struts1、struts2、Spring MVC
  业务层:Ioc、AOP、事务控制
  持久层:JdbcTemplate、HibernateTemplate、ORM 框架(对象关系映射)整合

轻量级

Spring 的出现取代了 EJB 的臃肿、低效、繁琐复杂、脱离现实。


二、Spring 的体系结构

  Spring 框架是一个分层架构,它包含一系列的功能要素并被分为大于 20 个模块。这些模块分为 Core Container、Data Access/Integration、Web、AOP(Aspect Oriented Programming)、Instrumentation 和测试部分,如图:

Spring 框架
Spring 框架

核心容器(Core Container)

包括 Core、Beans、Context、EL 模块。
  1:Core 和 Beans 模块提供了 Spring 最基础的功能,提供 IoC 和依赖注入特性。这里的基础概念是 BeanFactory,它提供对 Factory 模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。
  2:Context 模块基于 Core 和 Beans 来构建,它提供了用一种框架风格的方式来访问对象,有些像 JNDI 注册表。Context 封装包继承了 beans 包的功能,还增加了国际化(I18N),事件传播,资源装载,以及透明创建上下文,例如通过 servlet 容器,以及对大量 JavaEE特性的支持,如 EJB、JMX。核心接口是ApplicationContext。
  3:Expression Language,表达式语言模块,提供了在运行期间查询和操作对象图的强大能力。支持访问和修改属性值,方法调用,支持访问及修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从 Spring 容器获取 Bean,它也支持列表投影、选择和一般的列表聚合等。

数据访问/集成部分(Data Access/Integration)

  1:JDBC 模块,提供对 JDBC 的抽象,它可消除冗长的 JDBC 编码和解析数据库厂商特有的错误代码 。
  2:ORM 模块,提供了常用的”对象/关系”映射 APIs 的集成层。 其中包括 JPA、JDO、Hibernate 和 iBatis 。利用 ORM 封装包,可以混合使用所有 Spring 提供的特性进行”对象/关系”映射,如简单声明性事务管理 。
  3:OXM 模块,提供一个支持 Object 和 XML 进行映射的抽象层,其中包括 JAXB、CastorXMLBeans 、JiBX 和XStream 。
  4:JMS 模块,提供一套”消息生产者、消费者”模板用于更加简单的使用 JMS,JMS 用于用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
  5:Transaction 模块,支持程序通过简单声明性事务管理,只要是 Spring 管理对象都能得到 Spring 管理事务的好处,即使是 POJO,也可以为他们提供事务。

Web

  1:Web 模块,提供了基础的 web 功能。例如多文件上传、集成 IoC 容器、远程过程访问以及 Web Service 支持,并提供一个 RestTemplate 类来提供方便的 Restful services访问。
  2:Web-Servlet 模块,提供了 Web 应用的 Model-View-Controlle(r MVC)实现。SpringMVC 框架提供了基于注解的请求资源注入、更简单的数据绑定、数据验证等及一套非常易用的 JSP 标签,完全无缝与 Spring 其他技术协作。
  3:Web-Struts 模块, 提供了对 Struts 集成的支持,这个功能在 Spring3.0 里面已经不推荐了,建议你迁移应用到使用 Struts2.0 或 Spring 的 MVC。
  4:Web-Portlet 模块,提供了在 Portlet 环境下的 MVC 实现

AOP

  1:AOP 模块,提供了符合 AOP 联盟规范的面向方面的编程实现,让你可以定义如方法拦截器和切入点,从逻辑上讲,可以减弱代码的功能耦合,清晰的被分离开。而且,利用源码级的元数据功能,还可以将各种行为信息合并到你的代码中 。
  2:Aspects 模块,提供了对 AspectJ 的集成。
  3:Instrumentation 模块, 提供一些类级的工具支持和 ClassLoader 级的实现,可以在一些特定的应用服务器中使用。

Test

  Test 模块,提供对使用 JUnit 和 TestNG 来测试 Spring 组件的支持,它提供一致的ApplicationContexts 并缓存这些上下文,它还能提供一些 mock 对象,使得你可以独立的测试代码。


三、Spring 的核心

  IoC(Inverse of Control 控制反转): 将对象创建权利交给 Spring 工厂进行管理。 AOP(Aspect Oriented Programming 面向切面编程),基于动态代理的功能增强方式。

  Spring 是基于 IOC 和 AOP 的一套编程框架。

  轻量级框架是相对于重量级框架的一种设计模式:轻量级框架不带有侵略性API,对容器也没有依赖性,易于进行配置,易于通用,启动时间短。这是轻量级框架相对于重量级框架的优势。


四、Spring 的优点

Spring 出现为了解决 JavaEE 实际问题
  (1)方便解耦,简化开发
  Spring 就是一个大工厂,可以将所有对象创建和依赖关系维护,交给 Spring 管理
  (2)AOP 编程的支持
  Spring 提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
  (3)声明式事务的支持
  只需要通过配置就可以完成对事务的管理,而无需手动编程
  (4)方便程序的测试
  Spring 对 Junit4 支持,可以通过注解方便的测试 Spring 程序
  (5)方便集成各种优秀框架
  Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz、webservice、activity 等)的直接支持
  (6)降低JavaEE API 的 使 用 难 度
  Spring 对 JavaEE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等),都提供了封装,使这些 API 应用难度大大降低

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值