Appearance
第1章 Spring基础
做 Java 开发的程序员都知道 Spring的大名,市面上关于 Spring 的书籍也是汗牛充栋。本书介绍的 Spring 4.x 不是对 Spring 知识点的全面讲解,而是将工作中常用的 Spring 相关的知识点罗列出来,以点睛的形式(快速讲解+示例)让读者快速掌握Spring 在开发中的常用知识。
🚀 1.1 Spring 概述
🚀 1.1.1 Spring 的简史
Spring的历史网上有很多介绍,下面讲下我亲历的Spring 发展的过程:
第一阶段:xml配置
在 Spring 1.x 时代,使用 Spring 开发满眼都是 xml配置的 Bean,随着项目的扩大,我们需要把 xml 配置文件分放到不同的配置文件里,那时候需要频繁地在开发的类和配置文件之间切换。
第二阶段:注解配置
在 Spring 2.x时代,随着JDK 1.5 带来的注解支持,Spring提供了声明 Bean 的注解(如@Component、@Service),大大减少了配置量。这时 Spring 圈子里存在着一种争论:注解配置和 xml配置究竟哪个更好?我们最终的选择是应用的基本配置(如数据库配置)用xml,业务配置用注解。
第三阶段:Java 配置
从 Spring 3.x到现在,Spring 提供了 Java 配置的能力,使用 Java 配置可以让你更理解你配置的 Bean。我们目前刚好处于这个时代,Spring 4.x和Spring Boot 都推荐使用 Java 配置所以我们在本书通篇将使用 Java 配置。
🚀 1.1.2 Spring 概述
Spring 框架是一个轻量级的企业级开发的一站式解决方案。所谓解决方案就是可以基于Spring 解决 Java EE 开发的所有问题。Spring 框架主要提供了loC 容器、AOP、数据访问、Web开发、消息、测试等相关技术的支持。
Spring 使用简单的POJO(Plain Old Java Object,即无任何限制的普通 Java 对象)来进行企业级开发。每一个被 Spring 管理的 Java对象都称之为 Bean;而 Spring 提供了一个IoC 容器用来初始化对象,解决对象间的依赖管理和对象的使用。
1.Spring 的模块
Spring 是模块化的,这意味着你可以只使用你需要的Spring 的模块。如图 1-1所示。
图 1-1中的每一个最小单元,Spring 都至少有一个对应的jar 包。
(1) 核心容器(Core Container)
- Spring-Core:核心工具类,Spring其他模块大量使用Spring-Core;
- Spring-Beans:Spring定义Bean的支持:
- Spring-Context:运行时 Spring 容器;
- Spring-Context-Support:Spring 容器对第三方包的集成支持;
- Spring-Expression:使用表达式语言在运行时查询和操作对象
(2) AOP
- Spring-AOP:基于代理的 AOP 支持;
- Spring-Aspects:基于Aspect]的 AOP 支持。
(3) 消息(Messaging)
- Spring-Messaging:对消息架构和协议的支持。
(4) Web
- Spring-Web:提供基础的 Web集成的功能,在 Web项目中提供 Spring 的容器;
- Spring-Webmvc:提供基于 Servlet 的 Spring MVC;
- Spring-WebSocket:提供WebSocket 功能;
- Spring-Webmvc-Portlet:提供Portlet 环境支持;
(5) 数据访问/集成(DataAccess/Integration)
- Spring-JDBC:提供以JDBC访问数据库的支持;
- Spring-TX:提供编程式和声明式的事务支持;
- Spring-ORM:提供对对象/关系映射技术的支持;
- Spring-OXM:提供对对象/xml映射技术的支持;
- Spring-JMS:提供对 JMS的支持;
2.Spring 的生态
Spring 发展到现在已经不仅仅是Spring 框架本身的内容,Spring 目前提供了大量的基于Spring的项目,可以用来更深入地降低我们的开发难度,提高开发效率。
目前 Spring 的生态里主要有以下项目,我们可以根据自己项目的需要来选择使用相应的项目:
- Spring Boot:使用默认开发配置来实现快速开发
- Spring XD:用来简化大数据应用开发。
- Spring Cloud:为分布式系统开发提供工具集。
- Spring Data:对主流的关系型和 NOSOL 数据库的支持
- Spring Integration:通过消息机制对企业集成模式(EIP)的支持
- Spring Batch:简化及优化大量数据的批处理操作。
- Spring Security:通过认证和授权保护应用。
- Spring HATEOAS:基于HATEOAS 原则简化 REST 服务开发
- Spring Social:与社交网络API(如Facebook、新浪微博等)的集成
- Spring AMQP:对基于 AMQP 的消息的支持
- Spring Mobile:提供对手机设备检测的功能,给不同的设备返回不同的页面的支持
- Spring for Android:主要提供在 Android 上消费 RESTfulAPI的功能。
- Spring Web Flow:基于 Spring MVC 提供基于向导流程式的 Web 应用开发
- Spring Web Services:提供了基于协议有限的 SOAP/Web 服务。
- Spring LDAP:简化使用 LDAP 开发。
- Spring Session:提供一个API及实现来管理用户会话信息。
1.2 Spring 项目快速搭建
讲到项目的搭建,也许有些读者使用的是通过开发工具新建项目,然后将项目所要依赖的