Spring 概述
Spring 框架是一个轻量级的企业级开发的一站式解决方案。所谓解决方案就是可以基于Spring 解决Java EE 开发的所有问题。Spring 框架主要提供了IoC 容器、AOP、数据访问、Web开发、消息、测试等相关技术的支持。
Spring 使用简单的POJO(Plain Old Java Object,即无任何限制的普通Java 对象)来进行企业级开发。每一个被Spring 管理的Java 对象都称之为Bean;而Spring 提供了一个IoC 容器用来初始化对象,解决对象间的依赖管理和对象的使用。
Spring 是模块化的,这意味着你可以只使用你需要的Spring 的模块。如图所示。
上图的每一个最小单元,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:基于AspectJ 的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)数据访问/集成(Data Access/Integration)
Spring-JDBC:提供以JDBC 访问数据库的支持;
Spring-TX:提供编程式和声明式的事务支持;
Spring-ORM:提供对对象/关系映射技术的支持;
Spring-OXM:提供对对象/xml 映射技术的支持;
Spring-JMS:提供对JMS 的支持。
Spring 发展到现在已经不仅仅是Spring 框架本身的内容,Spring 目前提供了大量的基于Spring 的项目,可以用来更深入地降低我们的开发难度,提高开发效率。
目前Spring 的生态里主要有以下项目,我们可以根据自己项目的需要来选择使用相应的项目。
Spring Boot:使用默认开发配置来实现快速开发。
Spring XD:用来简化大数据应用开发。
Spring Cloud:为分布式系统开发提供工具集。
Spring Data:对主流的关系型和NoSQL 数据库的支持。
Spring Integration:通过消息机制对企业集成模式(EIP)的支持。
Spring Batch:简化及优化大量数据的批处理操作。
Spring Security:通过认证和授权保护应用。
Spring HATEOAS:基于HATEOAS 原则简化REST 服务开发。
Spring Social:与社交网络API(如Facebook、新浪微博等)的集成。
Spring AMQP:对基于AMQP 的消息的支持。
Spring Mobile:提供对手机设备检测的功能,给不同的设备返回不同的页面的支持。
Spring for Android:主要提供在Android 上消费RESTful API 的功能。
Spring Web Flow:基于Spring MVC 提供基于向导流程式的Web 应用开发。
Spring Web Services:提供了基于协议有限的SOAP/Web 服务。
Spring LDAP:简化使用LDAP 开发。
Spring Session:提供一个API 及实现来管理用户会话信息。
什么是Spring Boot
随着动态语言的流行(Ruby、Groovy、Scala、Node.js),Java 的开发显得格外的笨重:繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术集成难度大。
在上述环境下,Spring Boot 应运而生。它使用“习惯优于配置”(项目中存在大量的配置,此外还内置一个习惯性的配置,让你无须手动进行配置)的理念让你的项目快速运行起来。使用Spring Boot 很容易创建一个独立运行(运行jar,内嵌Servlet 容器)、准生产级别的基于Spring框架的项目,使用Spring Boot 你可以不用或者只需要很少的Spring 配置。
【Spring Boot 核心功能】
Spring Boot 可以以jar 包的形式独立运行,运行一个Spring Boot 项目只需通过java –jarxx.jar 来运行。
Spring Boot 可选择内嵌Tomcat、Jetty 或者Undertow ,这样我们无须以war 包形式部署项目。
Spring 提供了一系列的starter pom 来简化Maven 的依赖加载,例如,当你使用了spring-boot-starter-web 时,会自动加入如下图所示的依赖包。
Spring Boot 会根据在类路径中的jar 包、类,为jar 包里的类自动配置Bean,这样会极大地减少我们要使用的配置。当然,Spring Boot 只是考虑了大多数的开发场景,并不是所有的场景,若在实际开发中我们需要自动配置Bean,而Spring Boot 没有提供支持,则可以自定义自动配置。
Spring Boot 提供基于http、ssh、telnet 对运行时的项目进行监控。
Spring Boot 的神奇的不是借助于代码生成来实现的,而是通过条件注解来实现的,这是Spring 4.x 提供的新特性。
Spring 4.x 提倡使用Java 配置和注解配置组合,而Spring Boot 不需要任何xml 配置即可实现Spring 的所有配置。
【Spring Boot 的优缺点】
(1)快速构建项目;
(2)对主流开发框架的无配置集成;
(3)项目可独立运行,无须外部依赖Servlet 容器;
(4)提供运行时的应用监控;
(5)极大地提高了开发、部署效率;
(6)与云计算的天然集成。
(1)书籍文档较少且不够深入,这是直接促使我写这本书的原因;
(2)如果你不认同Spring 框架,这也许是它的缺点,但建议你一定要使用Spring 框架。
本文选自《JavaEE开发的颠覆者: Spring Boot实战》