Spring框架快速入门
Spring框架快速入门
概述
Spring Framework是一个轻量级的解决方案,也是构建企业级应用程序的潜在一站式解决方案。但是,Spring是模块化的,允许您只使用您需要的部件,而无需引入其余部分。您可以使用IoC容器,顶部有任何Web框架,但您也可以只使用 Hibernate集成代码或JDBC抽象层。Spring Framework支持声明式事务管理,通过RMI或Web服务远程访问您的逻辑,以及用于持久保存数据的各种选项。它提供了全功能的MVC框架,使您能够将AOP透明地集成到您的软件中。
Spring被设计为非侵入式的,这意味着您的域逻辑代码通常不依赖于框架本身。在集成层(例如数据访问层)中,将存在对数据访问技术和Spring库的一些依赖性。但是,应该很容易将这些依赖项与其余代码库隔离开来。
Spring框架简介
Spring Framework是一个Java平台,为开发Java应用程序提供全面的基础架构支持。Spring处理基础架构,因此您可以专注于您的应用程序。
Spring允许您从“普通旧Java对象”(POJO)构建应用程序,并以非侵入方式将企业服务应用于POJO。此功能适用于Java SE编程模型以及完整和部分Java EE。
作为应用程序开发人员,您可以从Spring平台中受益的示例如下:
- 使Java方法在数据库事务中执行,而不必处理事务API。
- 使本地Java方法成为HTTP端点,而无需处理Servlet API。
- 使本地Java方法成为消息处理程序,而无需处理JMS API。
- 使本地Java方法成为管理操作,而无需处理JMX API。
依赖注入和控制反转
Java应用程序 - 指从受限制的嵌入式应用程序到n层服务器端企业应用程序 - 通常由协作形成应用程序的对象组成。因此,应用程序中的对象彼此依赖。
尽管Java平台提供了丰富的应用程序开发功能,但它缺乏将基本构建块组织成一个连贯整体的方法,将该任务留给架构师和开发人员。虽然您可以使用诸如Factory,Abstract Factory,Builder,Decorator和Service Locator 之类的设计模式来构成应用程序的各种类和对象实例,但这些模式只是:给出名称的最佳实践,描述为模式的作用,应用位置,解决的问题等等。模式是必须在应用程序中实现的正式最佳实践。
Spring框架控制反转(IoC)组件通过提供一种将不同组件组合成一个可以使用的完全工作的应用程序的形式化方法来解决这一问题。Spring Framework将形式化的设计模式编码为可以集成到您自己的应用程序中的对象。国外已经有许多组织和机构以这种方式使用Spring Framework来设计健壮,可维护的应用程序。
背景
“ 问题是,控制的哪些方面是[他们]反转? ”Martin Fowler 在2004年在他的网站上提出了关于控制反转(IoC)的 问题 .Fowler建议重新命名原则,使其更加不言自明,并提出依赖注入。
框架模块
Spring Framework由许多模块组成的功能组成。这些模块分为核心容器,数据访问/集成,Web,AOP(面向方面编程)等,如下图所示
1.1 Core Container - 核心容器
Spring Core Container 包含 core, beans, context等模块。其中,core 和 beans 模块提供了 Spring 框架的基础功能,包括控制反转(IoC)和依赖注入。BeanFactory 是工厂模式的一种复杂而精致的实现,它使开发者不再需要使用编码式单例(programmatic singletons),并可将配置和依赖从实际编码逻辑中解耦。
context 模块使得由 Core 和 Beans 提供的基础功能真正构建成坚实的基础:这意味着Spring 工程能以框架模式访问对象,类似于JNDI注册表。Context 模块继承了Beans 模块的特性并增加了对国际化(例如资源绑定)、事件传播、资源加载和context 透明化(例如 Servlet container)。同时,也支持JAVA EE 特性,例如 EJB、 JMX 和 基本的远程访问。Context 模块的关键是 ApplicationContext 接口。
1.2 Data Access/Integration - 数据访问与集成
数据访问与集成层包含 JDBC、ORM、OXM、JMS和事务模块。
jdbc 模块提供了 JDBC抽象层,它消除了冗长的 JDBC 编码和对数据库供应商特定错误代码的解析。
transaction 模块支持编程式事务和声明式事务,可用于实现了特定接口的类和所有的 POJO 对象。编程式事务需要自己写beginTransaction()、commit()、rollback()等事务管理方法,声明式事务是通过配置文件由 spring 自动处理,编程式事务粒度更细。
1.3 AOP
aop 模块提供了面向切面编程(AOP)的实现,可以定义诸如方法拦截器和切入点等,从而使实现功能的代码彻底的解耦。aspects 模块提供了对 AspectJ 的集成。
1.4 Instrumentation
instrument 模块提供了对检测类的支持和用于特定的应用服务器的类加载器的实现。
1.5 Web
Web 层包括 spring-web 等模块。
spring-web 模块提供面向 web 的基本功能和面向 web 的应用上下文,比如 multipart 文件上传功能、使用 Servlet 监听器初始化 IoC 容器等。它还包括 HTTP 客户端以及 Spring 远程调用中与 web 相关的部分。