- Spring核心基础
- Spring - 首页
- Spring - 概述
- Spring - 架构
- Spring - 环境设置
- Spring - HelloWorld示例
- Spring - IoC容器
- Spring - Bean定义
- Spring - Bean作用域
- Spring - Bean生命周期
- Spring - Bean后处理器
- Spring - Bean定义继承
- Spring - 依赖注入
- Spring - 注入内部Bean
- Spring - 注入集合
- Spring - Bean自动装配
- 基于注解的配置
- Spring - 基于Java的配置
- Spring - Spring中的事件处理
- Spring - Spring中的自定义事件
- Spring - Spring框架中的AOP
- Spring - JDBC框架
- Spring - 事务管理
- Spring - Web MVC框架
- Spring - 使用Log4J进行日志记录
- Spring问答
- Spring - 问答
- Spring有用资源
- Spring - 快速指南
- Spring - 有用资源
- Spring - 讨论
Spring框架 - 概述
Spring是企业级Java应用开发中最流行的框架。全球数百万开发者使用Spring框架来创建高性能、易于测试和可重用的代码。
Spring框架是一个开源的Java平台。它最初由Rod Johnson编写,并于2003年6月首次在Apache 2.0许可下发布。
Spring在体积和透明度方面都很轻量级。Spring框架的基本版本大约2MB。
Spring框架的核心功能可用于开发任何Java应用程序,但它也提供了扩展功能,可以在Java EE平台上构建Web应用程序。Spring框架旨在简化J2EE开发,并通过启用基于POJO的编程模型来促进良好的编程实践。
使用Spring框架的优势
以下是使用Spring框架的一些主要优势:
Spring使开发人员能够使用POJO开发企业级应用程序。仅使用POJO的好处是,您不需要EJB容器产品(例如应用服务器),而是可以选择仅使用健壮的Servlet容器(例如Tomcat)或某些商业产品。
Spring以模块化的方式组织。即使包和类的数量很多,您也只需要关注需要的那些,而忽略其余的。
Spring并没有重新发明轮子,而是真正利用了一些现有的技术,例如几种ORM框架、日志框架、JEE、Quartz和JDK计时器以及其他视图技术。
使用Spring编写的应用程序易于测试,因为依赖环境的代码已移入此框架。此外,通过使用JavaBean风格的POJO,使用依赖注入来注入测试数据变得更容易。
Spring的Web框架是一个设计良好的Web MVC框架,它为Struts或其他过度设计或不太流行的Web框架提供了一个很好的替代方案。
Spring提供了一个方便的API,用于将特定于技术的异常(例如JDBC、Hibernate或JDO抛出的异常)转换为一致的、未经检查的异常。
轻量级的IoC容器趋于轻量级,尤其是在与EJB容器相比时。这对在内存和CPU资源有限的计算机上开发和部署应用程序非常有益。
Spring提供了一个一致的事务管理接口,可以缩减到本地事务(例如,使用单个数据库),也可以扩展到全局事务(例如,使用JTA)。
依赖注入(DI)
Spring最显著的技术特性是依赖注入(DI)形式的控制反转。控制反转(IoC)是一个通用概念,可以用多种不同的方式表达。依赖注入只是控制反转的一个具体示例。
在编写复杂的Java应用程序时,应用程序类应尽可能独立于其他Java类,以增加重用这些类的可能性,并在单元测试时独立于其他类对其进行测试。依赖注入有助于将这些类粘合在一起,同时保持它们的独立性。
依赖注入究竟是什么?让我们分别看看这两个词。这里的“依赖”部分转化为两个类之间的关联。例如,类A依赖于类B。现在,让我们看看第二部分,“注入”。所有这一切都意味着,类B将由IoC注入到类A中。
依赖注入可以通过向构造函数传递参数或通过构造后使用setter方法来实现。由于依赖注入是Spring框架的核心,我们将在单独的章节中结合相关示例解释此概念。
面向方面编程(AOP)
Spring的关键组件之一是面向方面编程(AOP)框架。跨越应用程序多个点的功能称为横切关注点,这些横切关注点在概念上与应用程序的业务逻辑是分开的。方面的一些常见示例包括日志记录、声明式事务、安全性、缓存等。
OOP中的模块化关键单元是类,而在AOP中,模块化单元是方面。DI帮助您将应用程序对象彼此解耦,而AOP帮助您将横切关注点与受其影响的对象解耦。
Spring框架的AOP模块提供了一个面向方面编程的实现,允许您定义方法拦截器和切点,以干净地解耦实现应分离的功能的代码。我们将在单独的章节中详细讨论Spring AOP的概念。