目录
1 spring介绍
2 spring发展历程
3 spring带来的改变
4 spring 的架构分层
5 依赖注入
6 控制反转
7 AOP面向切面编程
8 什么是框架
8.1 为什么要使用软件框架
8.2 spring下载
spring框架 是一个轻量级的解决方案,并且提供了java企业级的构建服务,它使得java程序开发变得简单高效。
spring是模块化的设计,我们可以使用IOC容器和java工程一起使用(比如一些不依赖容器的服务,像任务管理,批处理服务),也可以仅引入Hibernate集成代码或JDBC抽象层访问数据库。spring框架支持声明式事务管理,通过RMI或Web services远程访问你的程序, 以及各种持久化数据的选项。
spring除支持java语言开发外,还支持Groovy和Kotlin。从Spring Framework 5.1开始,Spring需要使用JDK 8+ ,并为JDK 11 LTS提供开箱即用的支持。
spring是一个开源的框架,它拥有一些活跃的社区,如github, spring.io官网,这些社区提供各种应用场景的使用反馈,bug收集。
在spring之前,EJB是当时最火热的方案,很多知名公司都是采用此方案进行项目开发。但是spring创始人Rod Johnson认为EJB过于臃肿,并不是每个项目都适用于EJB这种大型框架。在2001年10月份,他发表了《Expert One-on-One J2EE》,阐述了JAVA EE和EJB组件框架中的一些弊端,在这本书中,他提出了一种基于普通javabean和依赖注入更简单的方案。
2003年,Rod Johnson和他的伙伴开发了全新的框架spring 0.9
2004年3月份,spring1.0发布
spring1.0仅支持xml配置方式,通过xml定义bean和bean之间的引用。
2006年10月份,spring2.0发布
随着jdk1.5版本开始支持注解,spring2.x版本开始使用注解对bean进行配置,大大简化了xml的配置,提高项目的开发效率。
2009年12月份,spring3.0发布
spring3.x版本开始,spring开始提供javaconfig的方式,通过javaconfig可以快速配置spring及bean之间的依赖关系。
2013年12月份,Pivotal 宣布发布 Spring 框架 4.0。
2017 年 09 月,Spring 5.0 GA 发布。
spring5.x版本开始,提供对jdk8+的支持,webflux支持反应式编程模型,并且对kotlin进行全方面的支持。
spring是一个JAVA平台,可为JAVA应用程序提供综合性的基础服务设施。spring提供基础服务封装,开发人员可以更关心于业务及应用程序。 spring通过非侵入性服务,让你能够通过普通pojo对象构建企业级应用程序。 作为应用程序开发人员,通过spring受益的示例如下:
在应用程序开发中,spring提供一套完整的方案,从http入口请求,到service业务处理,数据库持久层,spring作用于整个流程中。
java应用程序,无论是嵌入式的应用程序,还是N层的应用程序,服务端程序通常是由应用程序的对象组成的,这些应用程序中的对象互相依赖。 在传统项目中,假如我们需要一个对象或者功能,通常都是由我们主动创建赋值,在这个过程中,可能需要加载比较复杂的上下文条件。这种在大型应用开发、迭代中是非常费时且麻烦的。 而依赖注入,则简化了这个流程,通过一个管理容器,达到了引用即创建,创建就可以引用。
public class Animal{
private Cat cat;
public Animal(Cat cat) {
this.cat = cat;
}
}
在这个代码中,cat对象是在Animal构造方法中引用,非Animal这个类本身创建,像这种非自己主动创建的引入,则称为依赖注入。
控制反转是一种设计思想,而不是一种技术。 IOC是面向对象编程的一种升华,它能指导我们如何编写低耦合,健壮性,可复用的程序。
如上图所示,类内部对外透明,调用者不需要关注类的内部逻辑,调用非通过IOC容器达到声明即调用的方式,降低了类对象创建,上下文加载的难度。
aop,即面向切面编程,通过预编译和运行时动态织入代码的方式来实现对程序统一维护、管理的一种技术。AOP是spring的一个重要内容,也是函数式编程的衍生,也是OOP的延续。 一般情况下,在业务程序中,如果想对业务程序进行监控,或者超时统计,异常处理等,可能需要在每个代码段中去添加这些处理逻辑。但是通过AOP可以对有共同特性的业务逻辑进行统一的监控,维护和管理,大大提高了开发效率,减少代码的冗余,提高了代码的维护性。
软件框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。(来源百度百科)
框架就是一套规范,开发人员在这个规范下协同开发,快速迭代应用程序及版本。
spring源码下载地址: https://github.com/spring-projects/spring-framework/tree/4.2.x