本节内容大纲:
1、Spring介绍
2、框架结构
3、涉及术语
4、Spring优势
5、Spring的应用
给自己造就一个春天
深陷其中
顾名思义 ‘ Spring’ 春天的蕴意,当然我们在这里不能把它解析成春天,以前也经常问,Spring这个名字到底从何而来, 事实上,Spring代表了传统J2EE“冬天”之后的新起点, 让开发者不需要关心原始技术上的问题,只关心核心业务上的开发。
当然相信每个Java开发者在工作中,都对Spring怎么使用有所涉及,对于初入行的程序员而言,仅仅了解如何使用,尽快通过Spring来帮助我们完成任务应该已经够了,但是对于爱钻研的技术虫们,想要更加系统的学习,掌握它的的底层原理肯定是必不可少的。好吧,那就让我们先来结合官网的介绍初步了解一下它的概念吧。
Spring介绍?
Spring 是一个轻量级的 DI / IoC 和 AOP 容器的开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。我们可以选择一部分或者全部来应用。 Spring 的使命:简化 Java 开发 简单总结如下:
◆ 研发目的:解决企业应用开发的复杂性
◆主要功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
◆应用范围:任何Java应用
简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。
Spring 框架结构
1、核心容器:核心容器提供 Spring 框架的基本功能(Spring Core)。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
2、Spring 上下文:Spring 上下文是一个配置文件,向 Spring框架提供上下文信息。Spring 上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。
3、Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
4、Spring DAO:JDBCDAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
5、Spring ORM:Spring 框架插入了若干个ORM框架,从而提供了 ORM 的对象关系工具,其中包括JDO、Hibernate和iBatisSQL 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。模型由javabean构成,存放于Map;视图是一个接口,负责显示模型;控制器表示逻辑代码,是Controller的实现。Spring框架的功能可以用在任何J2EE服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同J2EE 环境(Web 或EJB)、独立应用程序、测试环境之间重用。
Spring 中涉及术语:
- 框架:简单来说就是一个半成品,我们可以快速创建完成项目。
框架作用:整体框架搭建、一些基础功能、规定了类和对象如何创建,如何协作等,项目研发时,框架帮助我们完成了一些功能,程序员本身完成一部分,项目很快就完成啦。 - 容器:
在日常生活中容器就是一种盛放东西的器具,如杯子,水杯等 从程序设计角度看就是装对象的的对象,因为存在放入、拿出等操作,所以容器还要管理对象的生命周期。 - 非侵入式设计:无需继承框架提供的任何类 ,更新框架之前写的代码照样可以使用,典型地,Spring应用中的对象不依赖于Spring的特定类
- 轻量级和重量级:轻量级一般就是非入侵性的、所依赖的东西非常少、资源占用非常少、部署简单等等,和jar包大小无关,本质就是比较易用,重量级相反
- JavaBean:
即符合 JavaBean 规范的 Java 类 - POJO:即 Plain Old Java Objects,简单老式 Java 对象
它可以包含业务逻辑或持久化逻辑,但不担当任何特殊角色且不继承或不实现任何其它Java框架的类或接口。 - IoC——促进了低耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它
Spring 的优势
- 低侵入 / 低耦合 (降低组件之间的耦合度,实现软件各层之间的解耦)
- 声明式事务管理(基于切面)
- 方便集成其他框架(如MyBatis、Hibernate、Struts2)
- 降低 Java 开发难度,让程序员精力有原来的技术和业务层专注到业务实现
- Spring 框架中包括了 J2EE 三层的每一层的解决方案(一站式)
Spring现实中的应用:
①.Spring 能帮我们根据配置文件管理对象之间的依赖关系。
②.Spring 面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。
③.Spring 能非常简单的帮我们管理数据库事务。
④.Spring 提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,而且自己也提供了一套JDBC访问模板来方便数据库访问。
⑤.Spring 提供与第三方Web(如Struts1/2、JSF)框架无缝集成,而且自己也提供了一套Spring MVC框架,来方便web层搭建。
⑥.Spring 能方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)。
总结:
好了,说了那么多,大家对Spring框架结构和应用应该有了初步概念了解,那在实际的应用中该如何使用,下面我们通过下一节看下Spring中第一个HelloWorld案例加以解析.