A. 谈谈spring是如何实现的
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
在这篇由三部分组成的 Spring 系列 的第 1 部分中,我将介绍 Spring 框架。我先从框架底层模型的角度描述该框架的功能,然后将讨论两个最有趣的模块:Spring 面向方面编程(AOP)和控制反转 (IOC) 容器。接着将使用几个示例演示 IOC 容器在典型应用程序用例场景中的应用情况。这些示例还将成为本系列后面部分进行的展开式讨论的基础,在本文的后面部分,将介绍 Spring 框架通过 Spring AOP 实现 AOP 构造的方式。
请参阅 下载,下载 Spring 框架和 Apache Ant,运行本系列的示例应用程序需要它们。
Spring 框架
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图 1 所示。
图 1. Spring 框架的 7 个模块
Spring 框架图示
组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
* 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
* Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
* Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
* Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
* Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
* Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
* Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web 或 EJB)、独立应用程序、测试环境之间重用。
回页首
IOC 和 AOP
控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器 (在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。
在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。下表列出了 IOC 的一个实现模式。
类型 1 服务需要实现专门的接口,通过接口,由对象提供这些服务,可以从对象查询依赖性(例如,需要的附加服务)
类型 2 通过 JavaBean 的属性(例如 setter 方法)分配依赖性
类型 3 依赖性以构造函数的形式提供,不以 JavaBean 属性的形式公开
Spring 框架的 IOC 容器采用类型 2 和类型3 实现。
面向方面的编程
面向方面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。
AOP 和 IOC 是补充性的技术,它们都运用模块化方式解决企业应用程序开发中的复杂问题。在典型的面向对象开发方式中,可能要将日志记录语句放在所有方法和 Java 类中才能实现日志功能。在 AOP 方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上。当然,优势就是 Java 类不需要知道日志服务的存在,也不需要考虑相关的代码。所以,用 Spring AOP 编写的应用程序代码是松散耦合的。
AOP 的功能完全集成到了 Spring 事务管理、日志和其他各种特性的上下文中。
回页首
IOC 容器
Spring 设计的核心是 org.springframework.beans 包,它的设计目标是与 JavaBean 组件一起使用。这个包通常不是由用户直接使用,而是由服务器将其用作其他多数功能的底层中介。下一个最高级抽象是 BeanFactory 接口,它是工厂设计模式的实现,允许通过名称创建和检索对象。BeanFactory 也可以管理对象之间的关系。
BeanFactory 支持两个对象模型。
* 单态 模型提供了具有特定名称的对象的共享实例,可以在查询时对其进行检索。Singleton 是默认的也是最常用的对象模型。对于无状态服务对象很理想。
* 原型 模型确保每次检索都会创建单独的对象。在每个用户都需要自己的对象时,原型模型最适合。
bean 工厂的概念是 Spring 作为 IOC 容器的基础。IOC 将处理事情的责任从应用程序代码转移到框架。正如我将在下一个示例中演示的那样,Spring 框架使用 JavaBean 属性和配置数据来指出必须设置的依赖关系。
BeanFactory 接口
因为 org.springframework.beans.factory.BeanFactory 是一个简单接口,所以可以针对各种底层存储方法实现。最常用的 BeanFactory 定义是 XmlBeanFactory,它根据 XML 文件中的定义装入 bean,如清单 1 所示。
清单 1. XmlBeanFactory
BeanFactory factory = new XMLBeanFactory(new FileInputSteam("mybean.xml"));
在 XML 文件中定义的 Bean 是被消极加载的,这意味在需要 bean 之前,bean 本身不会被初始化。要从 BeanFactory 检索 bean,只需调用 getBean() 方法,传入将要检索的 bean 的名称即可,如清单 2 所示。
清单 2. getBean()
MyBean mybean = (MyBean) factory.getBean("mybean");
每个 bean 的定义都可以是 POJO (用类名和 JavaBean 初始化属性定义) 或 FactoryBean。FactoryBean 接口为使用 Spring 框架构建的应用程序添加了一个间接的级别。
回页首
IOC 示例
理解控制反转最简单的方式就是看它的实际应用。在对由三部分组成的 Spring 系列 的第 1 部分进行总结时,我使用了一个示例,演示了如何通过 Spring IOC 容器注入应用程序的依赖关系(而不是将它们构建进来)。
我用开启在线信用帐户的用例作为起点。对于该实现,开启信用帐户要求用户与以下服务进行交互:
* 信用级别评定服务,查询用户的信用历史信息。
* 远程信息链接服务,插入客户信息,将客户信息与信用卡和银行信息连接起来,以进行自动借记(如果需要的话)。
* 电子邮件服务,向用户发送有关信用卡状态的电子邮件。
回页首
三个接口
对于这个示例,我假设服务已经存在,理想的情况是用松散耦合的方式把它们集成在一起。以下清单显示了三个服务的应用程序接口。
清单 3. CreditRatingInterface
public interface CreditRatingInterface {
public boolean (ICustomer iCustomer);
}
清单 3 所示的信用级别评定接口提供了信用历史信息。它需要一个包含客户信息的 Customer 对象。该接口的实现是由 CreditRating 类提供的。
清单 4. CreditLinkingInterface
public interface CreditLinkingInterface {
public String getUrl();
public void setUrl(String url);
public void linkCreditBankAccount() throws Exception ;
}
信用链接接口将信用历史信息与银行信息(如果需要的话)连接在一起,并插入用户的信用卡信息。信用链接接口是一个远程服务,它的查询是通过 getUrl() 方法进行的。URL 由 Spring 框架的 bean 配置机制设置,我稍后会讨论它。该接口的实现是由 CreditLinking 类提供的。
清单 5. EmailInterface
public interface EmailInterface {
public void sendEmail(ICustomer iCustomer);
public String getFromEmail();
public void setFromEmail(String fromEmail) ;
public String getPassword();
public void setPassword(String password) ;
public String getSmtpHost() ;
public void setSmtpHost(String smtpHost);
public String getUserId() ;
public void setUserId(String userId);
}
EmailInterface 负责向客户发送关于客户信用卡状态的电子邮件。邮件配置参数(例如 SMPT 主机、用户名、口令)由前面提到的 bean 配置机制设置。Email 类提供了该接口的实现。
回页首
Spring 使其保持松散
这些接口就位之后,接下来要考虑的就是如何用松散耦合方式将它们集成在一起。在 清单 6 中可以看到信用卡帐户用例的实现。
注意,所有的 setter 方法都是由 Spring 的配置 bean 实现的。所有的依赖关系 (也就是三个接口)都可以由 Spring 框架用这些 bean 注入。createCreditCardAccount() 方法会用服务去执行其余实现。在 清单 7 中可以看到 Spring 的配置文件。我用箭头突出了这些定义。
回页首
运行应用程序
要运行示例应用程序,首先必须 下载 Spring 框架 及其所有依赖文件。接下来,将框架释放到(比如说)磁盘 c:\,这会创建 C:\spring-framework-1.2-rc2 (适用于当前发行版本) 这样的文件夹。在继续后面的操作之前,还必须下载和释放 Apache Ant。
接下来,将源代码释放到文件夹,例如 c:\ 盘,然后创建 SpringProject。将 Spring 库(即 C:\spring-framework-1.2-rc2\dist 下的 spring.jar 和 C:\spring-framework-1.2-rc2\lib\jakarta-commons 下的 commons-logging.jar)复制到 SpringProject\lib 文件夹中。完成这些工作之后,就有了必需的构建依赖关系集。
打开命令提示符,将当前目录切换到 SpringProject,在命令提示符中输入以下命令:build。
这会构建并运行 CreateCreditAccountClient 类,类的运行将创建 Customer 类对象并填充它,还会调用 CreateCreditCardAccount 类创建并链接信用卡帐户。CreateCreditAccountClient 还会通过 装入 Spring 配置文件。装入 bean 之后,就可以通过 getBean() 方法访问它们了,如清单 8 所示。
清单 8. 装入 Spring 配置文件
appContext =
new (new String[] {
"springexample-creditaccount.xml"
});
creditCardAccount =
()
appContext.getBean("createCreditCard");
回页首
结束语
在这篇由三部分组成的 Spring 系列 的第一篇文章中,我介绍了 Spring 框架的基础。我从讨论组成 Spring 分层架构的 7 个模块开始,然后深入介绍了其中两个模块:Spring AOP 和 IOC 容器。
由于学习的最佳方法是实践,所以我用一个工作示例介绍了 IOC 模式 (像 Spring 的 IOC 容器实现的那样)如何用松散耦合的方式将分散的系统集成在一起。在这个示例中可以看到,将依赖关系或服务注入工作中的信用卡帐户应用程序,要比从头开始构建它们容易得多。
B. SPA的历史
关于SPA一词起源的探讨中有一个词始终贯穿其中,那就是“水疗”,它反映了水在古时的治疗领域和早期欧洲SPA文化中的重要作用。多数人认为SPA一词是一些拉丁短语的首字母组合,如“sanitas per aquam”,“solus per aquam ”,“sanus per aquam”。这些短语都有“用水治疗”的意思。另一种说法是SPA源于在罗马浴室中发现的涂鸦“salut per aquam”。
SPA也可能源于瓦龙语的“espa”,意思是喷泉,或源于拉丁语“spagere”,意思是泼水。有些专家认为该词源于比利时一个以温泉著称的叫spa的小镇。后来,spa一词就被用于温泉和提供水疗的疗养胜地。在19、20世纪,饮用矿泉水或在矿泉中洗浴成为时尚的休闲方式。
在欧洲的许多地区,spa一词仍保持着其强烈的历史联系,并严格地被用于与水疗有关的机构。在欧洲的英语地区和世界上一些其他地区,spa一词的意义变得更加广泛,包括身心的健康和放松。
水是spa疗法中的关键因素,除此之外,还因侧重自然健康疗法、运动、健身、饮食营养和保持身心的协调。
早在公元前1500年,印度人就以这种“神水”疗伤镇痛,古希腊人也将其作为一剂治病强身的灵丹妙药,而在奢华的古罗马,人们更是利用水温的天然不同,将公共浴室分为很热、微热、冷池。这里成为勇士们洗净身体污垢的公共交流场所。 15世纪中,SPA的名字来源于靠近比利时的列日市的一个叫作Spau 的小山谷,这是一个非常丰富矿物质的热温区,当地的居民通过泡温泉浴治疗各种疾病与疼痛。由此当地的温泉浴远近闻名。
1677年4月11日,法国国王路易十四与其弟弟奥尔良公爵菲利普一世带领军队与荷兰(佛兰德)开战,菲利普一世在卡塞尔大败后来的英国国王威廉三世 。返回巴黎的过程中,路过列日并享受了Spau的水疗,感觉不错,于是把水疗的技巧带回巴黎宫廷,此时水疗仅在法国宫廷中的高级贵族中可以得到享用。
此时国王路易十四一生中拥有过很多情人,接二连三不断的更换,每个女人都如走马观花一样在他的生命中进了又出,停了又留,他们有的温柔顺从、有的善于权术、有的冰雪聪明、有的风华正茂,总之种类繁多,其中最著名的有玛丽 曼奇尼,拉瓦莉小姐,蒙特斯夫人,曼特农夫人等。由于路易十四更换情人频率很高,让这些女人们充满了被抛弃的恐惧,她们会认为是因为自己容颜老去导致国王不喜欢她们了,于是他们会找到王室最受欢迎的女人也是路易十四弟弟菲利普一世的夫人莉兹女爵去倾诉,希望能够永葆青春。莉兹女爵也拥有同样的困扰,作为一个女人,怎样才能永葆青春呢?在莉兹女爵接手王室的葡萄酒产业后,便发现葡萄园里的仆人因为使用园中残剩的葡萄酒保养皮肤,年轻而有光泽,深受启发。红衣主教布雍在了解到王室这些女人的需求后,结合了比利时Spa小山谷盛行的水疗养生,莉兹女爵的葡萄酒,为王室的女人们设计了宗教仪式,受洗礼并饮用葡萄酒后,可以永葆青春,这个仪式由于是在圣克卢宫所进行,被称为圣克卢荣耀,由于来自于莉兹女爵,也被称为莉兹荣耀,法国王室不老传奇。
当时的仪式要在大理石材质的浴缸中先进行宗教祈祷仪式,然后饮用葡萄酒,并把葡萄酒置于温泉水中用于王公贵族洗浴使用。上帝会听到祈祷,会让祈祷者永葆青春。由于此仪式比较昂贵,只在最高等级的贵族中流行。
1870年7月28日,拿破仑三世在圣克卢宫发动了对普鲁士人的战争,巴黎这座被高度独裁统治的城市在巴黎包围战中被普鲁士人攻破。1870年10月13日,圣克卢宫被普鲁士人烧毁,幸运的是,大部分的收藏、财宝被欧也妮王后于战争发起时转移。但波旁王朝奥尔良家族珍藏的部分收藏品被普鲁士人带回了普鲁士,神秘的宗教仪式“圣克卢荣耀”也在普法战争后流传到了普鲁士,改良了普鲁士人文森特 普利斯尼茨和塞巴斯蒂安 柯乃普发明的水疗,并为现代水疗养生奠定了基础。
除了SPA这个地方外,古罗马人在欧洲其它地区也利用天然的矿泉作为疗伤治病。后来,世界各地出现了越来越多的温泉疗养胜地。美国的加利福尼亚、法国、英国、意大利、奥地利、日本、台湾等地都有很知名的温泉疗养中心,而SPA这种休闲美容方式在这些地方也很流行。
随着时代的发展,人们不断赋予SPA更新的方式和更丰富的内涵。如今SPA这种融合了古老传统和现代高科技的水疗方法已不再是贵族们的专宠,而逐渐成为现代都市人回归自然、消除身心疲惫,集休闲、美容、解压于一体的时尚健康概念,配合着五感疗法,不论是舒缓按摩、美容还是温泉水疗。凡此种种与舒缓压力、舒缓身、心灵有关的活动,都可以称之为SPA。 SPA早期仅是以具疗效的温泉和矿泉区为主,至今演变成一种人人都可享受,并且集休闲、美容、减压于一体的休闲健康新概念。这样的演变是随着时代潮流的推进以及现代人对休闲生活的日益重视而形成的。SPA (源于拉丁文 Solus Par Agula),意为“健康之水”,与英式休闲文化的SPA(Spring pute air)意为“在矿泉区里享受纯净的空气”。SPA的美妙气息蔓延了几百年——希腊的文献旧时就有记载,在水中加上矿物及香薰、草药、鲜花,可以预防疾病及延缓衰老。
国际SPA协会对SPA的定义是:SPA致力于通过提供鼓励更新观念,身体和精神的各种专业服务,提高人们的整体健康水平。从狭义上讲SPA指的就是水疗美容与养生。形式各异的SPA,包括冷水浴、热水浴、冷热水交替浴、海水浴、温泉浴、自来水浴,每一种浴都能在一定程度上松弛、缓和紧张、疲惫的肌肉和神经,排除体内毒素,预防和治疗疾病,另外水疗配合各种芳香精油按摩,会加速脂肪燃烧、具有瘦身的效果。 从广义上讲,SPA包括人们熟知的水疗、芳香按摩、沐浴、去死角等等。现代SPA主要透过人体的五大感官功能,即听觉(疗效音乐)、味觉(花草茶、健康饮食)、触觉(按摩、接触)、嗅觉(天然芳香精油)、视觉(自然或仿自然景观、人文环境)等达到全方位的放松,将精、气、神三者合一,实现身、心、灵的放松,如今SPA逐渐演变成现代美丽补给的代名词。
水疗是SPA最普遍的形式。据考SPA的名字起源于罗马帝国时期比利时的一个叫“SPA”的小镇,因为那里有一温泉,可以美容甚至治疗疾病而闻名。
到了近代,科学家才揭开温泉的秘密,水中的精油成分来源于当地山上成千上万种花卉草木在上游水源的浸积。人们模拟建造类似的环境及水质,使其对人体具有健康及健美作用,即为现代的“SPA”。
SPA有不同的主题诉求,有的偏重放松、舒缓、排毒的疗程;有的以健美瘦身为重点;还有的重在芳香精油、海洋活水或纯草本疗法等。但无论是哪种类型的SPA,都不脱离满足客人听觉(疗效音乐)、嗅觉(天然花草薰香)、视觉(自然景观)、味觉(健康餐饮)、触觉(按摩呵护)和感觉(内心放松)等6种愉悦感官的基本需求。 SPA的愉悦身心,为内心囤积的压力、疲惫、惶惑找到一个出口,令人的身、心、灵达到和谐与平衡的享受。身、心、灵皆美是现代身处亚健康状态的都市人的梦想。SPA吹来的怡人芳香,正是从身、心、灵上给人以关怀和抚慰,呵护的容颜、关爱你的心灵,让你由内至外充满生机、神采飞扬。
C. springbank从多少年开始喝
Springbank Whisky因campbeltown坎贝尔城,创造出举世闻名的苏格兰威士忌,Campbeltown坎贝尔城也因云顶酒厂(Springbank Disillers)而扬名国际;这个位于苏格兰西南半岛的岬角地人口不过6000,却酝酿出全世界顶级的单一麦芽苏格兰威士忌,其浓厚的人文艺术气息,更是充斥于漫长的酿酒历史里。…
D. 中国历史朝代简介(英文版)
一、秦朝
Qin Dynasty
The Qin Dynasty (221-207 BC) was the first unified dynasty in the history of China developed by the Qin State in the Warring States Period.
译文:秦朝(前221—前207)是由战国时期的秦国发展起来的中国历史上第一个大一统王朝,秦人的祖先大费是黄帝之孙颛顼的后裔,舜赐其嬴姓。
二、汉朝
Han Dynasty
The Han Dynasty (202-8 years ago, 25-220 years ago) was a unified dynasty after the Qin Dynasty. It was mainly divided into the Western Han Dynasty and the Eastern Han Dynasty.
译文:汉朝(前202年-8年,25年-220年)是继秦朝之后的大一统王朝,主要分为西汉、东汉时期,共历29帝,享国四百零五年。
三、晋朝
Jin Dynasty
Jin Dynasty (266-420 years), a dynasty in Chinese history, was divided into two periods: the Western Jin Dynasty and the Eastern Jin Dynasty.
译文:晋朝(266年-420年),中国历史上的朝代,上承三国下启南北朝,分为西晋与东晋两个时期,其中西晋为中国历史上大一统王朝之一,东晋则属于六朝之一,两晋共传十五帝,共一百五十五年。
四、隋朝
Sui Dynasty
The Sui Dynasty (581-618 or 619) was a unified dynasty in Chinese history, which inherited the Northern and Southern Dynasties and the Tang Dynasty.
译文:隋朝(581年—618年或619年)是中国历史上承南北朝下启唐朝的大一统朝代。
五、唐朝
1、Tang Dynasty
The Tang Dynasty (618-907) was a unified Central Plains Dynasty after the Sui Dynasty. It had twenty-one emperors and enjoyed the country for 289 years.
译文:唐朝(618年—907年),是继隋朝之后的大一统中原王朝,共历二十一帝,享国二百八十九年。
(4)spring发展历史扩展阅读:
中国历史(中国区域范围内的历史)
中国历史是指中国从中华文明产生到现在的历史。中国历史悠久,自黄帝部落的姬轩辕(也称公孙轩辕)时期算起约有5000年;从三皇五帝算起约有4600年;自夏朝算起约有近4100年;从中国第一次大统一的中央集权制的秦朝算起约有2240年。
中国历经多次政权演变和朝代更迭,也曾是世界上最强大的国家,经济、文化、科技世界瞩目。中国史前时期炎黄二帝被尊奉为中华民族的人文始祖。
约公元前2070年,中国最早的国家夏朝出现。东周推进了生产力发展和社会变革,思想上形成百家争鸣的局面。公元前221年,秦始皇建立了中国历史上第一个统一的专制主义中央集权帝国—秦朝,西汉进一步巩固和发展了大一统的局面。
三国两晋南北朝时,中国陷入分裂割据局面,五胡乱华期间,异族融于中国趋势加强,诸多民族在分立政权的冲突中逐渐汇聚。隋唐时期,中央与边疆少数民族联系更为密切,经济繁荣、科技文化高度发展。
宋元时期,多元文化碰撞交融,经济、科技发展到新的高度。明朝鼎盛时期,社会经济高度发展,明末在江南地区出现资本主义萌芽。
19世纪中期,鸦片战争后中国开始沦为半殖民地半封建社会。1911年辛亥革命,推翻了帝制,确立了共和政体。袁世凯死后,中国进入军阀割据混乱时期。
后经国民大革命,土地革命,抗日战争以及解放战争,终于在1949年成立中华人民共和国。又经1966年到1976年的文化大革命。1978年后中国开始实行改革开放政策,中国经济快速发展,2011年中国超越日本成为世界第二大经济体。
E. 什么是Spring
Spring是企业应用程序所需要的一站式解决方案, 但Spring仍然是模块化的,允许你只使用你所需的哪些部分,而无需附加上其他部分。 你可以使用
IoC容器,在其上使用Struts,但是你也可以选择使用 Hibernate 整合代码或者 JDBC 抽象层。
我们将Spring设计为非侵入式的(并且以后也是如此),这意味着应用基本上不需要依赖框架本身 (或者肯定是最小的,取决于所使用的部分)。
F. SPA简介历史
起源
关于SPA一词起源的探讨中有一个词始终贯穿其中,那就是“水疗”,它反映了水在古时的治疗领域和早期欧洲SPA文化中的重要作用。多数人认为SPA一词是一些拉丁短语的首字母组合,如“sanitas per aquam”,“solus per aquam ”,“sanus per aquam”。这些短语都有“用水治疗”的意思。另一种说法是SPA源于在罗马浴室中发现的涂鸦“salut per aquam”。
SPA也可能源于瓦龙语的“espa”,意思是喷泉,或源于拉丁语“spagere”,意思是泼水。有些专家认为该词源于比利时一个以温泉著称的叫spa的小镇。后来,spa一词就被用于温泉和提供水疗的疗养胜地。在19、20世纪,饮用矿泉水或在矿泉中洗浴成为时尚的休闲方式。
在欧洲的许多地区,spa一词仍保持着其强烈的历史联系,并严格地被用于与水疗有关的机构。在欧洲的英语地区和世界上一些其他地区,spa一词的意义变得更加广泛,包括身心的健康和放松。
水是spa疗法中的关键因素,除此之外,还因侧重自然健康疗法、运动、健身、饮食营养和保持身心的协调。
早在公元前1500年,印度人就以这种“神水”疗伤镇痛,古希腊人也将其作为一剂治病强身的灵丹妙药,而在奢华的古罗马,人们更是利用水温的天然不同,将公共浴室分为很热、微热、冷池。这里成为勇士们洗净身体污垢的公共交流场所。
G. 谁知道关于JAVA和J2EE的发展历史年鉴
http://ke..com/view/29.htm
http://ke..com/view/1507.htm
-----------------------------------------
很全很详细!
H. spring框架的起源
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由OP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。
背景:
Rod Johnson在2002年编著的《Expert one on one J2EE design and development》一书中,对Java EE 系统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新
Spring Logo
之道。以此书为指导思想,他编写了interface21框架,这是一个力图冲破Java EE传统开发的困境,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署的轻量级开发框架。Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。同年他又推出了一部堪称经典的力作《Expert one-on-one J2EE Development without EJB》,该书在Java世界掀起了轩然大波,不断改变着Java开发者程序设计和开发的思考方式。在该书中,作者根据自己多年丰富的实践经验,对EJB的各种笨重臃肿的结构进行了逐一的分析和否定,并分别以简洁实用的方式替换之。至此一战功成,Rod Johnson成为一个改变Java世界的大师级人物。
传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务、事务处理等。
Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。
I. java语言的发展历史
早期的Java
Duke,Java语言的吉祥物语言最开始只是太阳微系统( MicroSystems)公司在1990年12月开始研究的一个内部项目。太阳微系统公司的一个叫做帕特里克?诺顿的工程师被公司自己开发的C++和C语言编译器搞得焦头烂额,因为其中的API极其难用。帕特里克决定改用NeXT,同时他也获得了研究公司的一个叫做“Stealth计划”的项目的机会。
“Stealth计划”后来改名为“Green计划”,詹姆斯·高斯林和麦克?舍林丹也加入了帕特里克的工作小组。他们和其他几个工程师一起在加利福尼亚州门罗帕克市沙丘路的一个小工作室里面研究开发新技术,瞄准下一代智能家电(如微波炉)的程序设计,太阳公司预料未来科技将在家用电器领域大显身手。团队最初考虑使用C++语言,但是很多成员包括太阳的首席科学家比尔?乔伊,发现C++和可用的API在某些方面存在很大问题。
工作小组使用的是内嵌类型平台,可以用的资源极其有限。很多成员发现C++太复杂以至很多开发者经常错误使用。他们发现C++缺少垃圾回收系统,还有可移植的安全性、分布程序设计、和多运行续功能。最后,他们想要一种易于移植到各种设备上的平台。
根据可用的资金,比尔?乔伊决定开发一种集C语言和Mesa语言大成的新语言,在一份报告上,乔伊把它叫做“未来”,他提议太阳公司的工程师应该在C++的基础上,开发一种面向对象的环境。最初,高斯林试图修改和扩展C++的功能,他自己称这种新语言为C++ ++ --,但是后来他放弃了。他将要创造出一种全新的语言,被他命名为“Oak”(橡树),以他的办公室外的橡树命名。
就像很多开发新技术的秘密工程一样,工作小组没日没夜地工作到了1992年的夏天,他们能够演示新平台的一部分了,包括Green操作系统,Oak的程序设计语言,类库及其硬件。最初的尝试是面向一种类PDA设备,被命名为Star7,这种设备有鲜艳的图形界面和被称为“Duke”的智能代理来帮助用户。1992年12月3日,这台设备进行了展示。
同年11月,Green计划被转化成了“FirstPerson有限公司”,一个太阳公司的全资子公司,团队也被重新安排到了帕洛阿尔托。FirstPerson团队对建造一种高度交互的设备感兴趣,当时代华纳发布了一个关于电视机顶盒的征求提议书时(Request for proposal),FirstPerson改变了他们的目标,作为对征求意见书的响应, 提出了一个机顶盒平台的提议。但是有线电视业界觉得FirstPerson的平台给予用户过多的控制权,因此FirstPerson的投标败给了SGI。与3DO公司的另外一笔关于机顶盒的交易也没有成功,由于他们的平台不能在电视工业产生任何效益,公司被并回太阳公司。
1994年6月、7月间,在经历了一场历时三天的脑力激荡的讨论后,约翰·盖吉、詹姆斯·高斯林、比尔·乔伊、帕特里克·诺顿、韦恩·罗斯因和埃里克·斯库米,团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。他们认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。作为原型,帕特里克·诺顿写了一个小型万维网浏览器,WebRunner,后来改名为HotJava。由于商标搜索显示,Oak已被一家显卡制造商注册。于是同年,Oak被改名为Java。当使用十六进制编辑器打开由Java源代码编译出的二进制文件(.class文件)的话,最前面的32位将显示为CA FE BA BE,即词组“CAFE BABE”(咖啡屋宝贝)。
1994年10月,HotJava和Java平台为公司高层进行演示。1994年,Java 1.0a版本已经可以提供下载,但是Java和HotJava浏览器的第一次公开发布却是在1995年3月23日SunWorld大会上进行的。升阳公司的科学指导约翰·盖吉声明Java技术。这个发布是与网景公司的执行副总裁马克·安德森的惊人发布一起进行的,宣布网景将在其浏览器中包含对Java的支持。1996年1月,升阳公司成立了Java业务集团,专门开发Java技术。Java近况在流行几年之后,Java在浏览器中的地位被逐步侵蚀。它在简单交互性动画方面的用途已经完全被Adobe公司的Flash排挤,2005年Java倾向只被用于雅虎游戏那样的更为复杂的应用程序。Java同时遭受到来自微软的反对,他们决定在新版本的Internet Explorer和Windows中不再附带Java平台。
与此相反。在万维网的服务器端和手持设备上,Java变得更加流行。很多网站在后端使用JSP和其他的Java技术。
在桌面系统上,独立的Java程序还是相对少见,这是因为Java平台的运行开销较大,而许多人的电脑上没有安装Java,由于网络带宽在以前较小,下载Java曾经是个耗时的事情。但是随着计算机计算能力、网络带宽在10年中取得了很大的进步,同时虚拟机和编译器的质量得到了提高,许多应用程序得到了广泛的使用