Spring框架基础知识
1.Spring框架的由来与发展:
(1).Spring是Java Web三大经典框架(Struts、Spring、Hibernate ,SSH)中主要用于降低模块之间耦合度的框架,实际上Spring除了能够通过IoC降低模块之间的耦合度外,还提供了其它功能。
(2).2002年,Rod Johnson编著出版了《Expert one to one J2EE design and development》,该书中对JavaEE框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。以此书为指导思想,他编写了interface21框架,这是一个力图冲破J2EE传统开发的困境,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署的轻量级开发框架。
(3).Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,2003年推出Spring1.0测试版;2004年3月24日,发布了1.0正式版;同年他又推出了一部堪称经典的力作《Expert one-to-one J2EE Development without EJB》,该书在Java世界掀起了轩然大波,不断改变着Java开发者程序设计和开发的思考方式。在该书中,作者根据自己多年丰富的实践经验,对EJB的各种笨重臃肿的结构进行了逐一的分析和否定,并分别以简洁实用的方式替换之。至此一战功成,Rod Johnson成为一个改变Java世界的大师级人物。
(4).传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现“一次编写,到处运行”的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务、事务处理等。Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。
(5).2006年,推出Spring2.0;2007年推出Spring2.5;2008年推出Spring3.0;2011年推出Spring3.1。目前,Spring最新版本是Spring4。其中Spring4又多了一些新特性,大家也可以去查阅资料。
2.Spring软件包的下载:
(1).对于Spring软件包的下载,我们可以进入官网下载,但是好多的英文,其中又有很多东西,所以有一种简单的方法,接下来我附上一个镜像网站:http://maven.springframework.org/release/org/springframework/spring/ ,大家可以从这里下载。
(2).大家也可以用下面这种方式来下载Spring的软件包,我们可以打开这个地址:Spring的软件仓库地址 ,点击这个http://repo.spring.io 网址后,如下图所示:
按照上面红色箭头指向处点击Artifacts后,如下图所示:
再打开Quick Search后,出现下图:
在上图我们已经输入搜索内容,点击Search按钮后,就可以选择我们所需要的Spring软件包进行下载了,如下图所示:
这里只需spring-framework-4.1.6.RELEASE-dist.zip即可,选中之后旁边有下载按钮,下载即可!
(3).下载完上面那个包之后,解压后,文件结构如下图所示:
文件夹包括:
docs文件夹:该文件夹下包含Spring4的相关文档、开发指南及API参考文档。
libs文件夹:该文件夹下包含Spring4的JAR包。
schema文件夹:里面包含了Spring4所用到的xsd文件。
这里先不讲如何配置Spring,因为配置Spring所需要的jar包,在我们上面下载的libs目录底下是缺少的!
3. Spring框架的体系结构:
(1).容器是指Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,可以配置每个Bean如何被创建以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,EJB经常是庞大与笨重的,难以使用。
(2).框架是指Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给开发者。
Spring3的体系结构体系如下图:
(3).下面来介绍上图中的一些重要的东西:
核心容器:核心容器提供Spring框架的基本功能。核心容器的主要组件是BeanFactory和ApplicationContext。容器使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。