7.1 Spring简介和Spring5.0的变化
7.1 Spring简介和Spring5.0的变化
Spring框架由Rod Johnson开发,2004年发布了Spring框架的第一个版本。经过十多年的发展,Spring已经发展成Java EE开发中最重要的框架之一。对于一个Java开发者来说, Spring已经成为必须掌握的技能。
不仅如此,围绕Spring,以Spring为核心还衍生出了一系列框架,如Spring Web Flow、 Spring Security,Spring Data、 Spring boot、 Spring Cloud等,具体请登录Spring官方网站, Spring越来越强大,带给开发者越来越多的便捷。本书所介绍的是Spring框架本身.
7.1.1 Spring简介
Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。Spring为企业应用的开发提供了一个轻量级的解决方案。该解决方案包括:
- 基于依赖注入的核心机制、
- 基于
AOP的声明式事务管理、 - 与多种持久层技术的整合,
- 以及优秀的
Web MVC框架等。
Spring致力于Java EE应用各层的解决方案,而不是仅仅专注于某一层的方案。可以说: Spring是企业应用开发的”一站式”选择, Spring贯穿表现层、业务层、持久层。然而, Spring并不想取代那些已有的框架而是以高度的开放性与它们无缝整合。
总结起来, Spring具有如下优点
- 低侵入式设计,代码的污染极低。
- 独立于各种应用服务器,基于
Spring框架的应用,可以真正实现Write once, Run Anywhere的承诺。 Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦。Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式处理,从而提供了更好的复用。Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问。Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。

图7.1显示了Spring框架的组成结构图。正如从图7.1所见到的,当使用Spring框架时,必须使用Spring Core Container(即Spring容器),它代表了Spring框架的核心机制, Spring Core Container主要由:
org.springframework.core、org.springframework.beans、org.springframework.contextorg.springframework.expression、
四个包及其子包组成,主要提供Spring loc容器支持。其中org.springframework.expression及其子包是Spring3.0新增的,它提供了Spring Expression Language支持。
7.1.2 Spring5.0的变化
与之前的Spring版本相比, Spring5.0发生了一些变化,这些变化包括:
Spring5.0整个框架已经全面基于Java8,因此**Spring5.0对JDK的最低要求就是Java8**,Spring5.0可以在运行时支持Java9。- 因为
Java8的反射增强,因此Spring5.0框架可以对方法的参数进行更高效的访问。 Spring5.0核心接口已加入了Java8接口支持的默认方法Spring5.0框架已经自带了通用的日志封装,因此不再需要额外的common-logging日志包。当然,新版的日志封装也会对Log4j 2.x、SLF4J、JUL( java util.logging)进行自动检测。- 引入
@Nullable和@notNull注解来修饰可空的参数以及返回值,避免运行时导致NPE异常。 Spring5.0框架支持使用组件索引来扫描目标组件,使用组件索引扫描比使用类路径扫描更髙效。Spring5.0框架支持JetBrains Kotlin语言。Spring5.0的Web支持已经升级为支持Servlet3.1以及更高版本的规范。
从上面介绍可以看出, Spring5.0的升级主要就是全面基于Java8,并在运行时支持Java9和Servlet3.1规范,也为核心IoC容器增强了一些注解,并通过组件索引扫描来提升运行效率。本书所介绍的是Spring的最新发布版:Spring5.0.2,后面会介绍Spring5.0为核心IoC容器引入的注解.