专栏首页博文视点BroadviewSpring Boot!颠覆你的JavaEE开发

Spring Boot!颠覆你的JavaEE开发

Spring 概述

Spring 框架是一个轻量级的企业级开发的一站式解决方案。所谓解决方案就是可以基于Spring 解决Java EE 开发的所有问题。Spring 框架主要提供了IoC 容器、AOP、数据访问、Web开发、消息、测试等相关技术的支持。

Spring 使用简单的POJO(Plain Old Java Object,即无任何限制的普通Java 对象)来进行企业级开发。每一个被Spring 管理的Java 对象都称之为Bean;而Spring 提供了一个IoC 容器用来初始化对象,解决对象间的依赖管理和对象的使用。

  • Spring 的模块

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 的生态里主要有以下项目,我们可以根据自己项目的需要来选择使用相应的项目。

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 项目

Spring Boot 可以以jar 包的形式独立运行,运行一个Spring Boot 项目只需通过java –jarxx.jar 来运行。

  • 内嵌Servlet 容器

Spring Boot 可选择内嵌Tomcat、Jetty 或者Undertow ,这样我们无须以war 包形式部署项目。

  • 提供starter 简化Maven 配置

Spring 提供了一系列的starter pom 来简化Maven 的依赖加载,例如,当你使用了spring-boot-starter-web 时,会自动加入如下图所示的依赖包。

  • 自动配置Spring

Spring Boot 会根据在类路径中的jar 包、类,为jar 包里的类自动配置Bean,这样会极大地减少我们要使用的配置。当然,Spring Boot 只是考虑了大多数的开发场景,并不是所有的场景,若在实际开发中我们需要自动配置Bean,而Spring Boot 没有提供支持,则可以自定义自动配置。

  • 准生产的应用监控

Spring Boot 提供基于http、ssh、telnet 对运行时的项目进行监控。

  • 无代码生成和xml 配置

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实战》

本文分享自微信公众号 - 博文视点Broadview(bvbooks)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-04-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring经典高频面试题,原来是长这个样子

    本文选自《Spring 5核心原理与30个类手写实战》一书,文末参与互动有机会赢取本书。本文题目目录:

    博文视点Broadview
  • 硬核图书系列:《Spring Boot编程思想(核心篇)》

    小编说: 疫情像施了魔法一样,改变了我们每个人春节的轨迹。时间则从永远不够用突然变成了多得似乎不知干什么用。博文菌希望疫情没有改变我们那颗求知若渴的心。

    博文视点Broadview
  • 书单丨Java架构师成长丛书,巩固基础蓄力进阶!

    “Java程序员如何提升自己”这其实是一个对每个人而言都至关重要的职业发展规划问题,准备充分的人生才有更多选择的机会。

    博文视点Broadview
  • Spring高频面试题,你能答的上哪些?(高级篇)

    5、BeanFactory 和 ApplicationContext 有什么区别?

    Java架构
  • SpringBoot入门系列(一)如何快速创建SpringBoot项目

    这段时间也没什么事情,所以就重新学习整理了Spring Boot的相关内容。今天开始整理更新Spring Boot学习笔记,感兴趣的朋友可以关注我的博客:htt...

    架构师精进
  • 基于Spring Boot和Spring Cloud实现微服务架构学习(一)-Spring框架介绍

    看了几周Spring相关框架的书籍和官方demo,是时候开始总结下这中间的学习感悟。

    Java搬砖工人
  • Spring,Spring MVC及Spring Boot区别

    我们说到Spring,一般指代的是Spring Framework,它是一个开源的应用程序框架,提供了一个简易的开发方式,通过这种开发方式,将避免那些可能致使代...

    用户7286770
  • 如何系统学习Spring框架

    最近有朋友私信胖哥说自己从事Java开发好几年了,但是从来没有系统学习过Spring框架,希望找到一条系统学习Spring的路线来提升一下自己。这像极了以前的我...

    码农小胖哥
  • 为什么你要用 Spring?

    现代 Spring 几乎成为了 Java 在企业级复杂应用开发的代名词,得益于 Spring 轻量简单的设计哲学和其开放包容的生态圈,确实为廉颇老矣,尚能饭否的...

    phoenix.xiao
  • Spring Boot 到底是个啥?

    Spring 是重量级企业开发框架 EJB(Enterprise JavaBean) 的替代品,是为了解决企业级应用开发的复杂性而创建的,简化开发。通过 依赖注...

    村雨遥

扫码关注云+社区

领取腾讯云代金券