JavaEE基础 认识Spring
张颖 2018-04-08 来源 : 阅读 423 评论 0

摘要:Spring是一种轻量级的、非侵入式的Java/JavaEE应用框架,本篇JavaEE基础教程将为大家讲解JavaEE基础编程的知识点,看完这篇文章会让你对JavaEE基础编程的知识点有更加清晰的理解和运用。

JavaEE基础 认识Spring


Spring是一种轻量级的、非侵入式的Java/JavaEE应用框架,本篇JavaEE基础教程将为大家讲解JavaEE基础编程的知识点,看完这篇文章会让你对JavaEE基础编程的知识点有更加清晰的理解和运用。


Spring背景

Rod Johnson

《Expert One-on-One J2EE Design and Development》(2002)这本书的中文译本为《J2EE 设计开发编程指南》(2003)

半年后,一个新的Java Framework发布,同样出自Rod Johnson 的手笔,这自然引起了大家极大的兴趣,这就是SpringFramework。SpringFramework 实际上是《Expert One-on-One J2EE Design and Development》 一书中所阐述的设计思想的具体实现。

 

《Expert One-on-One J2EE Development without EJB》 (2004)

nSpring目标

让J2EE开发变的简单、易用     (框架的好处)

业务应用“不”依靠 Spring API (非侵入性)

集成已存在的成熟应用解决方案 (如Hibernate,不重复发明轮子)

利用面向对象的优秀技术       (面向接口而非实现编程,组合优于继承)

促进好的编程习惯             (测试驱动开发,测试简单,面向接口编程)

让测试业务应用变得简单、快速 (无侵入性,测试容易)

Spring优点

有效地组织你的中间层对象

消除各式各样的配置文件

将面对接口编程做到实处

自由、不依赖框架

将单元测试变的简单

统一的数据存储方式

只选择你需要的

Spring能干什么

Spring能干什么

笼统说:Spring能作为一个超级的”粘合”平台,把很多的技术有效整合到一

起,形成一个整体,以更好的解决问题,并使系统结构更优良、性能更出众。

(体现体系结构设计的:组件式、装配式、插拔式、复用性、无侵入式等)

具体点说,Spring能干的事情很多,最基本的有以下几条:

1:IoC/DI

2:AOP

3:对JDBC和ORM的支持

4:服务(典型如:事务)

5:各种技术的整合(典型如:Struts2+Spring3+Hibernate3整合,还有很多其他的技术整合,如EJB、JMS等)

6:Web应用框架(SpringMVC)

7:更多技术,如:Spring的Security、Spring的Web Flow、Spring的WebService等等

 

Spring有什么


JavaEE基础 认识Spring

上图是Spring框架2.5版时官方给出的概述图

Core包

Core封装包是框架的最基础部分,提供IoC和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。

构建于Core封装包基础上的 Context封装包,提供了一种框架式的对象访问方法,有些象JNDI注册器。Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N)的支持(例如资源绑定),事件传播,资源装载的方式和Context的透明创建,比如说通过Servlet容器。

DAO包

DAO提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。还提供了一种比编程性更好的声明性 事务管理方法,不仅仅是实现了特定接口,而且对所有的POJOs(plain old Java objects)都适用。

ORM包

ORM 封装包提供了常用的“对象/关系”映射APIs的集成层。 其中包括JPA、JDO、Hibernate 和 iBatis 。利用ORM封装包,可以混合使用所有Spring提供的特性进行“对象/关系”映射,如前边提到的简单声明性 事务管理。

AOP包

Spring的 AOP 封装包提供了符合 AOP 联盟规范的面向方面的编程实现,让你可以定义如方法拦截器和切入点,从逻辑上讲,可以减弱代码的功能耦合,清晰的被分离开。而且,利用源码级的元数据功能,还可以将各种行为信息合并到你的代码中 。

Web包

Spring中的Web包提供了基础的针对Web开发的集成特性,例如多方文件上传,利用Servlet listeners进行IoC容器初始化和针对Web的application context。这个包使Spring可与其他框架结合。

MVC包

Spring中的 MVC 封装包提供了Web应用的MVC实现。Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种清晰的分离模型,在领域模型代码和web form之间。并且,还可以借助Spring框架的其他特性。

JavaEE基础 认识Spring

Spring3总共包含了大约20个模块,这些模块又被组织成为

核心容器部分、数据访问/集成部分、Web部分、AOP部分和测试支持几个部分。

核心容器部分(Core Container)又包含如下部分

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、Castor、XMLBeans、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-Controller(MVC)实现。Spring MVC框架提供了基于注解的请求资源注入、更简单的数据绑定、数据验证等及一套非常易用的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部分又包含如下部分

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

JavaEE基础 认识Spring


以上内容由职坐标整理并发布,欢迎大家前来职坐标学习!

本文由 @职坐标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论
本文作者 联系TA

熟悉企业级项目以及企业用人需求

  • 13
    文章
  • 952
    人气
  • 0%
    受欢迎度

已有0人表明态度,0%喜欢该老师!

进入TA的空间
名师指导 直通车
  • 索取资料 索取资料 索取资料
  • 答疑解惑 答疑解惑 答疑解惑
  • 技术交流 技术交流 技术交流
  • 职业测评 职业测评 职业测评
  • 面试技巧 面试技巧 面试技巧
  • 高薪秘笈 高薪秘笈 高薪秘笈
TA的其他文章 更多>>
JavaEE基础 Spring体系
经验技巧 0% 的用户喜欢
JavaEE基础 Spring常用注解
经验技巧 0% 的用户喜欢
SpringBoot 如何优雅的使用mybatis
经验技巧 0% 的用户喜欢
JavaEE进阶 Springboot集成Mybatis
经验技巧 0% 的用户喜欢
JavaEE错误 SpringBoot出现bean无法被spring扫描到的问题
经验技巧 0% 的用户喜欢
其他海同名师 更多>>
刘新华
刘新华 联系TA
实力型。激情饱满,对专业充满热情
吴翠红
吴翠红 联系TA
独创“教、学、练、测”循环教学模式
吕益平
吕益平 联系TA
熟悉企业软件开发的产品设计及开发
黄泽民
黄泽民 联系TA
擅长javase核心技术
程钢
程钢 联系TA
擅长大型企业商业网站开发和管理
经验技巧30天热搜词 更多>>

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:13167058313
小职老师的微信号:13167058313

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    ICP许可  沪B2-20190160

站长统计