springweb框架简介

时间:2020-02-23 14:29:28  来源:igfitidea点击:

在本文中,我将解释Spring框架背后的关键概念,以及如何进一步使用它来构建web应用程序。

什么是Spring框架?

springframework是一个面向Java的开源应用程序容器,它提供了许多有用的特性,比如控制反转、依赖注入、抽象数据访问、事务管理等等。Spring最初是由rodjohnson在2002年引入的,它是一个30K行的代码框架,伴随着他的书《J2EE设计与开发专家一号》。该框架最初被称为“interface21”,但后来改名为“Spring”并作为一个开源项目发布。你可以在Spring的教程 上阅读完整的故事。

罗德·约翰逊——Spring的创造者

Spring的第一个主要版本是在2004年发布的,它改变了JavaEE应用程序的游戏规则。此时,J2EE规范缺少功能,并且很难使用。Spring被认为是J2EE的替代品(甚至是一个替代品),现在仍然如此。即使是现在,它也有许多Java企业版规范中没有的特性。

Spring版本和发布时间:

2006年的2.0版

2007年的2.5版

2009年3.0版

2011年3.1版

2012年3.2版

2013年4.0版

2014年4.2版

2015年4.3版

2016年的5.0版本,这是最新版本

什么是控制反转(IoC)?

Spring的核心特性之一是控制反转(IoC)概念的使用。IoC是关于颠倒传统编程模型在高层对象方面的控制流,处理低层对象生命周期的创建和管理。在IoC编程模型中,高级对象从调用对象或者外部框架接收这些依赖关系的一个或者多个实例。这就是为什么IOC也被称为依赖注入(Dependency Injection),其中依赖项被适当地注入,而对象只关心程序的执行而不是对象的创建。

简单地说,控制反转(IoC)和依赖注入(DI)模式都是关于从代码中删除依赖项的。

例如,假设应用程序有一个map组件,我们希望提供一个解析器来转换地图坐标。标准代码如下所示:

public class Map {
	private CoordinatesParser parser;

	public Map() {
		this.parser = new CoordinatesParser();
	}
}

在上面的代码中,我们在

Map

CoordinatesParser

,通过使用

this.parser = new CoordinatesParser();

如你所见

Map

类直接依赖于

CoordinatesParser

类。

下一个例子展示了如何通过使用接口和构造函数注入来避免这种情况

public class Map {
	private ICoordinatesParser parser;

	public Map(ICoordinatesParser parser) {
		this.parser = parser;
	}
}

在上面的例子中,我们不使用类,而是使用接口

ICoordinatesParser

. 这样我们就可以通过

CoordinatesParser

中的依赖类

Map

构造函数签名(不初始化类中的依赖项)。这允许我们调用依赖项,然后将其传递给

Map

像这样的类:

ICoordinatesParser parser = new CoordinatesParser(); //dependency
Map map = new Map(parser);

这只是一个简单的例子。国际奥委会过于笼统,不能用一个严格的例子来描述。我们可以通过使用setter注入、构造函数注入或者接口注入来实现DI。