Spring 概述
Spring 是最受欢迎的企业级 Java 利用程序开发框架,数以百万的来自世界各地的开发人员应用 Spring 框架来创立性能好、易于测试、可重用的代码。
Spring 框架是一个开源的 Java 平台,它最后是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下公布。
Spring 是轻量级的框架,其根底版本只有 2 MB 左右的大小。
Spring 框架的外围个性是能够用于开发任何 Java 应用程序,然而在 Java EE 平台上构建 web 应用程序是须要扩大的。Spring 框架的指标是使 J2EE 开发变得更容易应用,通过启用基于 POJO 编程模型来促成良好的编程实际。
三层架构
- A 体现层 web 层 MVC 是体现层的一个设计模型
- B 业务层 service 层
- C 长久层 dao 层
Spring 的低劣个性
- 非侵入式:基于 Spring 开发的利用中的对象能够不依赖于 Spring 的 API
- 管制反转:IOC——Inversion of Control,指的是将对象的创立权交给 Spring 去创立。应用 Spring 之前,对象的创立都是由咱们本人在代码中 new 创立。而应用 Spring 之后。对象的创立都是给了 Spring 框架。
- 依赖注入:DI——Dependency Injection,是指依赖的对象不须要手动调用 setXX 办法去设置,而是通过配置赋值。
- 面向切面编程:Aspect Oriented Programming——AOP
- 容器:Spring 是一个容器,因为它蕴含并且治理利用对象的生命周期
- 组件化:Spring 实现了应用简略的组件配置组合成一个简单的利用。在 Spring 中能够应用 XML 和 Java 注解组合这些对象。
- 一站式:在 IOC 和 AOP 的根底上能够整合各种企业应用的开源框架和优良的第三方类库(实际上 Spring 本身也提供了体现层的 SpringMVC 和长久层的 Spring JDBC)
应用 Spring 框架的益处
上面列出的是应用 Spring 框架次要的益处:
Spring 能够使开发人员应用 POJOs 开发企业级的应用程序。只应用 POJOs 的益处是你不须要一个 EJB 容器产品,比方一个应用程序服务器,然而你能够抉择应用一个强壮的 servlet 容器,比方 Tomcat 或者一些商业产品。
Spring 在一个单元模式中是有组织的。即便包和类的数量十分大,你只有放心你须要的,而其它的就能够疏忽了。
Spring 不会让你白费力气做反复工作,它真正的利用了一些现有的技术,像 ORM 框架、日志框架、JEE、Quartz 和 JDK 计时器,其余视图技术。
测试一个用 Spring 编写的应用程序很容易,因为环境相干的代码被挪动到这个框架中。此外,通过应用 JavaBean-style POJOs,它在应用依赖注入注入测试数据时变得更容易。
Spring 的 web 框架是一个设计良好的 web MVC 框架,它为比方 Structs 或者其余工程上的或者不怎么受欢迎的 web 框架提供了一个很好的供代替的抉择。MVC 模式导致应用程序的不同方面 (输出逻辑,业务逻辑和 UI 逻辑) 拆散,同时提供这些元素之间的涣散耦合。模型 (Model) 封装了应用程序数据,通常它们将由 POJO 类组成。视图 (View) 负责渲染模型数据,一般来说它生成客户端浏览器能够解释 HTML 输入。控制器 (Controller) 负责解决用户申请并构建适当的模型,并将其传递给视图进行渲染。
Spring 对 JavaEE 开发中十分难用的一些 API(JDBC、JavaMail、近程调用等),都提供了封装,使这些 API 利用难度大大降低。
轻量级的 IOC 容器往往是轻量级的,例如,特地是当与 EJB 容器相比的时候。这有利于在内存和 CPU 资源无限的计算机上开发和部署应用程序。
Spring 提供了统一的事务管理接口,可向下扩大到 (应用一个繁多的数据库,例如) 本地事务并扩大到全局事务(例如,应用 JTA)。
依赖注入(DI)
Spring 最认同的技术是管制反转的依赖注入 (DI) 模式。管制反转 (IoC) 是一个通用的概念,它能够用许多不同的形式去表白,依赖注入仅仅是管制反转的一个具体的例子。
当编写一个简单的 Java 应用程序时,应用程序类应该尽可能的独立于其余的 Java 类来减少这些类可重用可能性,当进行单元测试时,能够使它们独立于其余类进行测试。依赖注入 (或者有时被称为配线) 有助于将这些类粘合在一起,并且在同一时间让它们放弃独立。
到底什么是依赖注入?
让咱们将这两个词离开来看一看。这里将依赖关系局部转化为两个类之间的关联。例如,类 A 依赖于类 B。当初,让咱们看一看第二局部,注入。所有这所有都意味着类 B 将通过 IoC 被注入到类 A 中。
依赖注入能够以向构造函数传递参数的形式产生,或者通过应用 setter 办法 post-construction。因为依赖注入是 Spring 框架的外围局部,所以我将在一个独自的章节中利用很好的例子去解释这一概念。
面向切面的程序设计(AOP):
Spring 框架的一个要害组件是面向切面的程序设计 (AOP) 框架。一个程序中逾越多个点的性能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。有各种各样常见的很好的对于方面的例子,比方日志记录、申明性事务、安全性,和缓存等等。
在 OOP 中模块化的要害单元是类,而在 AOP 中模块化的要害单元是方面。AOP 帮忙你将横切关注点从它们所影响的对象中分离出来,然而依赖注入帮忙你将你的应用程序对象从彼此中分离出来。
Spring 框架的 AOP 模块
提供了面向方面的程序设计实现,能够定义诸如办法拦截器和切入点等,从而使实现性能的代码彻底的解耦进去。应用源码级的元数据,能够用相似于 .Net 属性的形式合并行为信息到代码中。我将在一个独立的章节中探讨更多对于 Spring AOP 的概念。
以上就是 Spring 框架的内容,心愿对大家有帮忙,初学者学 spring 我更倡议视频学习,举荐能源节点的 spring 教程。