知方号

知方号

Spring Boot 框架(一)<粗粮的优点缺点是什么意思啊>

Spring Boot 简介 一、Spring Boot 概述1.1 Spring Boot 概述1.2 Spring Boot 特点1.3 Spring Boot 的优点

一、Spring Boot 概述 1.1 Spring Boot 概述

1.1.1 Spring Boot 介绍 (1)Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。传统的spring项目中需要用到大量的xml配置,以及复杂的bean依赖关系,随着spring3.0的发布spring团队开始大量使用约定大于配置的思想来简化配置。

(2)Spring Boot就是这样一种开发框架,Spring Boot并不能直接完成Spring的工作。准确的说Spring Boot只是一个整合Spring各项功能的中间件,用于快速的开发Spring应用,同时针对于常用的第三方库也提供了默认的配置,几乎可以实现0配置开发的目的。

(3)Spring Boot的设计是可以尽可能快地启动和运行,只需要最少的Spring配置。Spring Boot对构建生产就绪应用程序具有独特的方式。从官方的介绍可以看出Spring Boot的核心思想是“约定优先于配置(Convention Over Configuration)”,其本质其实还是基于Spring来实现的。对于了解Spring的人或者使用过Spring的人来说,Spring烦琐的配置让很多程序员眼花缭乱(各种XML、Annotation配置等),甚至很多时候发生错误也很难快速定位错误的地方。而在Spring Boot框架中,为我们提供了默认的配置,从而使开发人员不再需要定义样板化的配置,通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(Rapid Application Development)成为领导者。

1.2 Spring Boot 特点

1.2.1 快速构建项目 Spring Boot具有多种快速构建项目的方式,如下面几种形式: (1)使用Eclipse(MyEclipse)可以利用创建Maven项目的方式创建Spring Boot项目。当然,如果在Eclipse中安装了Spring Tools,就可以直接创建Spring Starter Project。 (2)使用IntelliJ IDEA,可以利用创建Spring Initializr的方式创建Spring Boot项目,在后续章节会详细介绍这种方式的过程。 (3)使用Spring Tool Suite,可以直接新建Spring Starter Project项目,过程类似Eclipse创建Spring Boot项目。 (4)使用官方文档创建项目,在Spring官方文档上面提供了一种在线生成Spring Boot项目的方式,首先访问Spring官方快速构建地址(官网地址:https://start.spring.io/),在这个页面上选择对应版本、构建工具等,填写完成后单击Generate Project按钮,即可在本地下载一个Spring Boot项目的压缩包。

1.2.2 嵌入式Web容器 在传统Java Web项目中,当项目开发完成之后,还需要配置所需的Web容器(诸如Tomcat或者WebLogic之类的Web容器)。但是在Spring Boot搭建的项目中,内部提供了几种Web容器,如Tomcat、Jetty和Undertow。

在Spring Boot 1.x中默认为Tomcat;Spring Boot 2.x中则分为两种情况,引入spring-boot-starter-web依赖为Tomcat,引入spring-boot-starter-webflux依赖则为Netty。当然,也支持使用之前指出的几种Web容器,开发者只需要根据场景选择适合的Starter来获取一个默认配置好的容器即可,当启动成功后,应用一个默认端口为8080的HTTP服务。

1.2.3 易于构建任何应用 Spring Boot提供了一个强大的starter依赖机制,实质上Spring团队将Spring Boot框架整合了一切常用的maven依赖,使Spring Boot想要整合对应依赖,就要将需要的依赖全部引入。比如,需要在项目中使用Web,也就是我们常说的Spring MVC,如果是原有的maven项目,就需要引入很多依赖才能完成这个简单的需求。但是在Spring Boot项目中,我们只需要在maven依赖中加入spring-boot-starter-web依赖即可。比如项目中需要使用MySQL数据库,这里只需要加入MySQL依赖,并且在配置文件中配置数据库信息就可以正常使用。

1.2.4 自动化配置 这个特点是上一个特点的延伸,在应用程序中引入依赖之后,其实还有一个强大之处在于Spring Boot应用会根据引入的依赖提供一些默认的配置供我们使用,如果需要修改,那么只需要在配置文件中修改对应的配置即可完成需求。

以Spring MVC为例,传统Spring MVC项目需要配置对应的诸如ApplicationContext.xml(Spring配置文件)、ApplicationContext-mvc.xml(Spring MVC配置文件),而在Spring Boot中,这些需要的配置已经为我们默认配置了一套,不需要再进行配置了。比如,我们要加入Web应用程序根路径test的话,只需要在application.properties(Spring Boot应用程序默认配置文件)中加入server.servlet.context-path=/test即可。

1.2.5 开发者工具 在开发Web应用的时候,总会有一个困扰我们的问题,修改代码总是伴随不断重启项目,需要不断地断开Web容器,再重启来测试我们的代码。在Spring Boot应用中提供了开发者工具(spring-boot-devtools),当我们重新编译类文件的时候,开发者工具会自动替我们重启应用,无须手动单击重启。

1.2.6 强大的应用监控 在生产环境中,应用的各项指标监控更是必不可少。在Spring Boot应用中提供了一个spring-boot-starter-actuator(以下简称Spring Boot-Actuator)来供我们查看应用的各项指标,如health(健康检查)、dump(活动线程)、env(环境属性)、metrics(内存,CPU等)等指标,以监控我们的应用,同时可以配合使用spring-boot-admin-starter-server(以下简称Spring Boot-Admin)监控我们的项目。

Spring Boot-Admin可以在利用监控Spring Boot-Actuator端点的同时监控所有微服务应用的健康状态,如果出现异常,就可以向维护人员发送邮件或者以其他方式给予告警。不只是这样,就连监控神器Prometheus也可以通过简单的配置接入Spring Boot应用程序中。

1.2.7 默认提供测试框架 Spring Boot应用在创建项目之后会默认为我们创建测试类的文件,实质上就是引入spring-boot-starter-test依赖,然后可以通过它对各种场景进行测试,足够满足对项目的测试需求。

1.2.8 可执行Jar部署 由于Spring Boot项目内嵌Web容器,因此提供了一种特殊部署方式,可以直接利用Maven或者Gradle对Spring Boot项目进行打包,生成一个JAR文件,然后直接在具备环境的服务器或本地环境中利用java -jar xx.jar执行JAR文件,使应用能够快速运行。

1.2.9 IDE多样性 Spring Boot支持的开发工具很多,无论是曾经几乎所有开发者都使用的Eclipse一族,还是现在流行的IntelliJ IDEA,又或者是专门为开发Spring系列而生的Spring Tool Suite都是开发Spring Boot应用的不二法宝。

1.3 Spring Boot 的优点

1.3.1 简化工作 Spring Boot最大的优点是在一定程度上简化了我们的工作,大致分为以下几个角度对工作进行简化。 ·

(1)依赖简化:Spring Boot自有的starter中提供了一些可以快捷使用的依赖,让整合或集成一些常用的功能更便捷。

(2)配置简化:在配置方法中,如果没有特殊情况,Spring Boot为我们提供了一些默认的配置,比如端口号默认为8080等。

(3)部署简化:正如前面介绍的可执行JAR部署,与传统服务的Web模式部署(打WAR包部署)相比,连安装Web容器的时间都节省了,不只是开发者,对运维人员也是福音。

(4)监控简化:可以通过引用Spring Boot依赖的方式快捷提供监控端点,无代码侵入,十分便捷。

1.3.2 微服务时代 “微服务”一词最早是由Martin Fowler的《Microservices》一文提出的,其核心思想是将一个单体应用根据业务功能拆分成为多个服务,使业务代码之间不再耦合。

微服务的优势 (1)服务解耦:将单体应用转变为多个服务,服务与服务之间通过HTTP协议或其他约定好的协议等进行网络通信。

(2)技术选型广泛:微服务不需要局限于固定的技术栈,各个服务的开发团队可以根据场景自由选择开发技术,如Java、PHP、Node.Js等。

(3)服务并行开发:可以多个团队分别开发不同的模块,每个团队负责一个或者几个服务,相互不受影响。

(4)单一职责:不同服务的团队只需要关注自己团队的业务,无须经常为了熟悉业务而耽误时间。

(5)独立部署:由于每个服务都是独立的项目,因此当服务开发完成后,可以直接独立部署。

(6)敏捷开发:每个服务的业务迭代只需要更新对应服务的功能即可,支持快速迭代。

(7)故障隔离:在传统单体项目中,如果某个功能发。

微服务的劣势 (1)部署需要花费

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。