相信很多人都使用过或者听到过SpringBoot,那SpringBoot到底是什么,它是不是微服务,和SpringCloud是什么关系呢? 请往下看: 1、SpringBoot是什么?
从本质上来说,springboot是一个专注于框架的框架。Spring Boot就是对各种框架的整合,让他们集成在一起更加简单,简化了我们在集成过程中的模板化配置,它做了那些没有它你自己也会去做的Spring Bean配置。 SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件,所以 SpringBoot是一个服务于框架的框架,服务范围是简化配置文件。 2、SpringBoot的诞生 SpringBoot是伴随着Spring4.0诞生的; 从字面理解,Boot是引导的意思,因此SpringBoot帮助开发者快速搭建Spring框架; SpringBoot帮助开发者快速启动一个Web容器; SpringBoot继承了原有Spring框架的优秀基因; SpringBoot简化了使用Spring的过程。 3、SpringBoot可以做什么?
最明显的特点是,让文件配置变的相当简单、让应用部署变的简单(SpringBoot内置服务器,并装备启动类代码),可以快速开启一个Web容器进行开发。 你不用再写这些样板配置了,可以专注于应用程序的逻辑,这些才是应用程序独一无二的东西。 4、SpringBoot所具备的特征有:
(1)独立运行 Spring Boot而且内嵌了各种servlet容器,Tomcat、Jetty等,现在不再需要打成war包部署到容器中,Spring Boot只要打成一个可执行的jar包就能独立运行,所有的依赖包都在一个jar包内。 (2)简化配置 spring-boot-starter-web启动器自动依赖其他组件,简少了maven的配置。 (3)自动配置 Spring Boot能根据当前类路径下的类、jar包来自动配置bean,如添加一个spring-boot-starter-web启动器就能拥有web的功能,无需其他配置。 (4)无代码生成和XML配置 Spring Boot配置过程中无代码生成,也无需XML配置文件就能完成所有配置工作,这一切都是借助于条件注解完成的,这也是Spring4.x的核心功能之一。 Spring Boot没有引入任何形式的代码生成,而是利用了Spring 4的条件化配置特性,以及Maven和Gradle提供的传递依赖解析,以此实现Spring应用程序上下文里的自动配置。 (5)应用监控 Spring Boot提供一系列端点可以监控服务及应用,做健康检测。 5、帮助我们解决了哪些问题
1) Spring Boot使编码变简单 声明一个依赖+实现一个方法 即可正常运行 2) Spring Boot使配置变简单 Spring由于其繁琐的配置,一度被人认为“配置地狱”,各种XML、Annotation配置,让人眼花缭乱,而且如果出错了也很难找出原因。 Spring Boot更多的是采用Java Config的方式,对Spring进行配置。 3) Spring Boot使部署变简单 一键启动,java -jar XXXX.jar 不需要解压,并且不需要部署Tomcat等应用服务器,你需要的只有一个JDK 4) Spring Boot使监控变简单 采用spring-boot-start-actuator,直接以REST的方式,获取进程的运行期性能参数。 当然这些metrics有些是有敏感数据的,spring-boot-start-actuator为此提供了一些Basic Authentication认证的方案,这些方案在实际应用过程中也是不足的。 6、SpringBoot的不足 Spring Boot作为一个微框架,离微服务的实现还是有距离的。 没有提供相应的服务发现和注册的配套功能,自身的acturator所提供的监控功能,也需要与现有的监控对接。没有配套的安全管控方案,对于REST的落地,还需要自行结合实际进行URI的规范化工作。 7、那么SpringBoot不是什么呢
因为Spring Boot实在是太惊艳了,所以过去很多年的时间里有不少和它相关的言论。原先听到或看到的东西可能给你造成了一些误解。 首先,Spring Boot不是应用服务器。这个误解是这样产生的:Spring Boot可以把We b应用程序变为可自执行的JAR文件,不用部署到传统Java应用服务器里就能在命令行里运行。Spring Boot在应用程序里嵌入了一个Servlet容器(Tomcat、Jetty或Undertow),以此实现这一功能。但这是内嵌的Servlet容器提供的功能,不是Spring Boot实现的。 与之类似,Spring Boot也没有实现诸如JPA(JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。)或JMS(Java Message Service,Java消息服务)之类的企业级Java规范。它的确支持不少企业级Java规范,但是要在Spring里自动配置支持那些特性的Bean。例如,Spring Boot没有实现JPA,不过它自动配置了某个JPA实现(比如Hibernate)的Bean,以此支持JPA。
|