Spring Boot了解
定义
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
同类技术
Spring Data
Spring数据的任务是提供一种熟悉的、一致的、基于Spring的数据访问编程模型,同时仍然保留底层数据存储的特殊特性。它使得使用数据访问技术、关系和非关系数据库、地图减少框架以及基于云的数据服务变得容易。这是一个包含许多特定数据库的子项目的伞项目。这些项目是通过与这些令人兴奋的技术背后的许多公司和开发人员一起合作开发的。
Spring AMQ
Spring AMQP项目将核心Spring概念应用于基于AMQP的消息解决方案的开发。它提供了一个“模板”作为发送和接收消息的高级抽象。它还为消息驱动的POJOs提供了一个“侦听器容器”的支持。这些库促进了AMQP资源的管理,同时促进了依赖注入和声明性配置的使用。在所有这些情况下,您将看到Spring框架中JMS支持的相似性。该项目由两部分组成:Spring AMQP是基础抽象,Spring Rabor是RabByMQ实现。
Spring Mobile
Spring Mobile是一个框架,它提供了检测向Spring网站发出请求的设备的类型以及基于该设备提供替代视图的能力。就像所有的弹簧项目一样,弹簧手机的真正力量在于它能容易地扩展。
Spring for Andriod
Spring for Android是一个框架,它被设计成提供Spring系列项目的组件供Android应用程序使用。与所有的Spring项目一样,Android的真正强大之处在于它可以容易地扩展。
Spring Web Flow
Spring Web流建立在Spring MVC之上,并允许实现Web应用程序的“流”。流程封装了一系列步骤,引导用户执行某些业务任务。它跨越多个HTTP请求,具有状态,处理事务数据,可重用,本质上是动态的和长期的。
Spring Web Service
Spring Web服务(Spring WS)是Spring社区的一个产品,专注于创建文档驱动的Web服务。Spring Web Services旨在促进契约优先的SOAP服务开发,允许使用操纵XML有效负载的许多方法之一创建灵活的Web服务。该产品基于Spring本身,这意味着您可以将Spring概念(如依赖项注入)用作Web服务的一个组成部分。
优缺点
优点:
(1) 快速构建项目
(2) 对主流开发框架的无配置集成;
(3) 项目可独立运行,无须外部依赖Servlet容器;
(4) 提供运行时的应用监控;
(5) 极大的提高了开发,部署效率;
(6) 与云计算的天然集成。
缺点
1.从原来的xml配置方式转换到JAVA配置方式变化有点大,不太适应
2.感觉Spring Boot 比较适合做微服务,不适合做比较大型的项目。
组成部分
spring-boot模块
该模块提供了一些特性用来支持springboot中其他模块,这些特性包含如下。
SpringApplication类提供了静态方法以便于写一个独立了spring应用程序,该类的主要职责是create和refresh一个合适的Spring 应用程序上下文(ApplicationContext)
给web应用提供了一个可选的web容器(目前有Tomcat或Jetty)
一流的外部配置的支持(application.properties)
提供了便捷的应用程序上下文(ApplicationContext)的初始化器,以便在ApplicationContext使用前对其进行用户定制。
spring-boot-autoconfigure模块
springboot可以依据classpath里面的依赖的内容来自动配置bean到IOC容器,但是要开启这个自动配置功能需要添加@EnableAutoConfiguration注解。Auto-configuration会尝试推断哪些beans是用户可能会需要的。比如如果HSQLDB包在当前classpath下,并且用户并没有配置其他数据库链接,这时候Auto-configuration功能会自动注入一个基于内存的数据库连接到应用的IOC容器。
目前 auto-configuration 提供以下类型的注入:
Web (Tomcat or Jetty, Spring MVC)
JDBC (Commons DBCP, embedded databases, jdbcTemplate)
JPA with Hibernate
Spring Data JPA (automatically detecting Repository classes)
Spring Batch (including JobLauncherCommandLineRunners and database initialization)
Thymeleaf templating
Reactor asynchronous JVM programming
spring-boot-starters模块
Starters是一组可以方便使用的依赖描述,starter里面一般只有一个POM文件,pom文件里面添加了Spring框架和一些相关的功能模块的依赖配置,你需要使用某些功能时候在也不需要到处查找需要的功能都是那些jar包提供的并配置到POM文件了。比如如果你想要使用Spring和JPA作为数据库存取,你需要引入spring-boot-starter-data-jpa在你的工程即可。
spring-boot-actuator模块
SpringBoot还提供了许多附加功能,可以帮助我们在应用程序部署到生产环境后对其进行监控和管理。springboot提了http,jmx,shell等公交来管理和监控我们的应用程序。另外审计,监控和性能指标的收集可以自动应用到应用程序上。
spring-boot-cli模块
Spring Boot CLI是一个命令行公交用来快速搭建一个spring原型应用,并且可以运行Groovy脚本。
spring-boot-loader模块
Spring Boot Loader模块允许我们使用java -jar archive.jar运行包含嵌套依赖的jar或者war文件,
Spring Boot出现的原因
解决问题
(1) Spring Boot使编码变简单
(2) Spring Boot使配置变简单
(3) Spring Boot使部署变简单
(4) Spring Boot使监控变简单
(5) Spring的不足
Spring Boot没有出现之前的做法
Spring由于其繁琐的配置,一度被人认为“配置地狱”,各种XML、Annotation配置,让人眼花缭乱,而且如果出错了也很难找出原因。
SpringBoot的出现,改变了所有java开发的困境,SpringBoot最终奉行的宗旨:废除掉所有负责的开发,废除掉所有的配置文件,让开发变得更简单纯粹,核心“零配置”
学习方法
快速上手视频
官方实例
写DEMO
看开源代码
项目实践
与其他人分享