1.2 Spring介绍
在开始Spring Boot之旅前,有必要先介绍Spring框架,毕竟先有Spring,然后有Spring Boot。随着互联网高度发展,应用系统越来越多,并且复杂性越来越大,开发周期逐步变长。为了解决这些问题,产生了各种能解决这些问题的框架,比如著名的J2EE,但由于学习困难、开发效率低、代码重复高、配置复杂等原因,其在实践中并没有获得很好的成功。Spring框架的出现是为了解决这些类似的问题,并且在多年的实践中,获得了业界认可,并广泛使用。
那么,Spring是什么?Spring是一个基于Java的开源框架,任何一个开发人员都可以愉快地使用该框架,正因如此,Spring可以随时免费获得,并快速上手和使用,使其得到快速传播和壮大。
Spring简化企业级应用系统开发,这是Spring诞生的初衷之一。在一个应用系统中,不同功能重复代码会很多,同时为了统一开发团队使用框架,降低学习复杂性,参考其他框架优缺点,Spring具有简化企业级应用系统开发能力,并有效降低代码耦合度,极大地方便项目后期维护、升级和扩展等。而且,Spring是一个IOC(DI)和AOP容器框架。
Spring具有如下特点:
· 非侵入式。基于Spring开发的应用中的对象可以不依赖于Spring的API;
· 控制反转。IOC(Inversion of Control)指的是将对象的创建权交给Spring的bean工厂进行创建管理。这也是Spring的核心思想,通过面向接口编程的方式来实现对业务组件的动态依赖,IOC是Spring主要解决程序的耦合方式。在开发中,Spring通过配置文件说明要实例化的java类,然后通过加载方式读取配置文件,接着用Spring提供的方法获取根据指定配置进行初始化的实例对象;
· 依赖注入。DI(Dependency Injection)是指将相互依赖的对象进行分离,在Spring的配置中描述它们之间的依赖关系,同时这些依赖关系只在使用时才会被建立;
· 面向切面编程。AOP(Aspect Oriented Programming)是一种编程思想,即OOP的延续。其思想是将系统中非核心的业务提取出来,单独进行处理;
· 容器。Spring是一个容器,管理对象的生命周期、对象与对象之间的依赖关系。也可以通过配置文件来定义对象,以及设置其他对象的依赖关系;
· 组件化。Spring通过使用简单的组件配置而组合成一个复杂的应用;
· 一站式。Spring提供开放、容器的方式,可以整合各种企业应用的开源框架和优秀的第三方类库。这也是Spring能广泛流行的原因之一。
Spring本身提供了多种模块供实际开发中选择,这样能够减轻开发中程序的复杂性,如图1.3所示。该图清楚描述了Spring内的多个模块,在系统开发中,这些模块提供了开发应用所需基本框架,但正如Spring解决紧耦合问题,不必将应用完全基于Spring框架,可以根据需要挑选适合的模块而忽略其余的模块。核心容器是最基本模块,定义了创建、配置和管理bean的方式,其余Spring模块都在其上进行构建。
图1.3 Spring模块
组成Spring框架的每个模块都可以单独存在,或者与其他一个或多个模块共同实现系统。每个模块的功能描述如下:
核心容器。提供Spring框架的基本功能,主要组件是BeanFactory,其是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
Spring上下文。是一个配置文件,向Spring框架提供上下文信息。其包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。
Spring AOP。通过配置管理特性,该模块直接将面向切面的编程功能集成到Spring框架中。可以容易地使Spring框架管理的任何对象支持AOP。Spring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用Spring AOP,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。
Spring DAO。JDBC DAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO的面向JDBC的异常遵从通用的DAO异常层次结构。
Spring ORM。Spring框架插入了若干个ORM框架,从而提供了ORM的对象关系工具,其中包括JDO、Hibernate和iBatis SQL Map。所有这些都遵从Spring的通用事务和DAO异常层次结构。
Spring Web模块。Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。其还简化了处理多部分请求以及将请求参数绑定到域对象的工作,并提供了一些面向服务支持。
Spring MVC框架。MVC框架是一个全功能的构建Web应用程序的MVC实现。该框架可灵活配置,同时MVC容纳了大量视图技术,其中包括JSP、Velocity、Tiles、iText和POI。
截至目前,Spring版本已到5.x,可以说,Spring依然很受业界追捧,毕竟经过近20年的发展,Spring逐渐壮大,内容更加丰富。