SpringBoot-01-快速入门
SpringBoot
1. 快速入门
什么是Spring
- 轻量级的Java开源开发框架
- 为了解决企业级应用开发的复杂性而创建的,简化开发
Spring是如何简化Java开发的
为了降低Java开发的复杂性,Spring采用4种关键策略:
- 基于POJO的轻量级和最小侵入性编程;
- 通过IOC,依赖注入(DI)和面向接口实现松耦合;
- 基于切面(AOP)和惯例进行声明式编程;
- 通过切面和模板减少样式代码;
什么是SpringBoot
SpringBoot就是一个JavaWeb的开发框架,和SpringMVC类似,对比其他框架的好处是简化开发,约定大于配置,能迅速的开发web应用,几行代码就可以开发一个http接口。
所有的技术框架的发展都遵循一条主线:一个复杂应用场景->一种规范框架(只需配置)->重构轻量级框架->开始提倡"约定大于配置",衍生出一些一站式的解决方案。
这就是:Java企业级应用->J2EE->spring->springBoot的过程。
随着Spring不断发展,项目整合开发需要配置各种文件,逐渐向“配置地狱”演变。SpringBoot就是在这个背景下被抽象出来的开发框架,目的就是为了更容易的使用Spring、更容易的集成各种常用的中间件、开源软件。
SpringBoot基于Spring开发,本身不提供扩展功能,只是用于快速开发新一代基于Spring框架的应用程序。开箱即用!
SpringBoot的主要优点:
- 为所有Spring开发者更快的入门
- 开箱即用,提供各种默认配置来简化项目配置
- 内嵌式容器简化Web项目
- 没有冗余代码生成和XML配置的要求
1.1 微服务
什么是微服务?
微服务是一种架构风格,它要求我们在开发一个应用的时候,这个应用构建成一系列小服务的组合;可以通过http的方式互通。过去是 单体应用架构。
单体应用架构
单体应用架构(all in one)是指,所有应用服务都封装在一个应用中。
无论是ERP、CRM,你都把数据库访问,web访问等功能放在一个war包内。
- 这样的好处是,易于开发和测试;需要扩展时,只需要将war复制多份,放到多个服务器上,再做个负载均衡就可以了。
- 缺点是,哪怕修改一个小地方,都需要停掉整个服务,重新打包、部署war包。
微服务架构
所谓微服务架构,就是把每个功能元素独立出来。把独立出来的功能元素动态组合,即对功能元素进行复制,而没有对整个应用进行复制。
好处有:
- 节约了调用资源
- 每个功能元素的服务都是一个可替换的、可独立升级的软件代码
如何构建微服务
spring为我们带来了构建大型分布式微服务的全套、全程产品:
- 构建一个个功能独立的微服务应用单元,可以使用
SpringBoot
,可以帮我们快速构建一个应用; - 大型分布式网络服务的调用,这部分由
springcloud
来完成,实现分布式; - 在分布式中间,进行流式数据计算、批处理,我们用
spring cloud data flow
; - spring为我们想清楚了整个从开始构建应用到大型分布式应用全流程方案;
1.2 HelloWorld
准备工作:
环境准备:
- jdk1.8
- maven-3.6.1
- springboot 最新版(2.3.2)
- IDEA
创建基础项目
官方提供了一个快速生成的网站:Spring Initializr!(IDEA集成了这个网站)
- 可以在官网直接下载后,导入idea开发(官网在哪)
- 直接使用idea创建一个springboot项目(开发常用方式)
【目标一:使用Spring Initializr页面创建项目】
步骤:
-
填写项目信息
-
点击“Generate Project”生成项目,下载此项目
-
解压项目包,并以Maven项目导入IDEA
-
第一次打开,速度会比较慢,需要下载的依赖很多
项目结构分析
通过上面步骤完成了基础项目的创建,就会自动生成以下文件:
- 程序的主程序类
- 一个application.properties配置文件
- 一个测试类
pom.xml分析
打开pom.xml,查看Spring Boot项目的依赖,主要有四个部分:
- 项目元数据信息:包括groupId、artifactId、name、description;
- parent:继承
spring-boot-starter-parent
的依赖管理,控制版本和打包等内容; - dependencies:项目依赖,包含以下内容
spring-boot-starter-web
:实现HTTP接口(包含SPringMVC),官网对它的描述:使用SpringMVC构建Web应用程序的入门者,使用Tomcat作为默认嵌入式容器spring-boot-starter-test
:用于编写单元测试的依赖包
- build:构建配置部分。默认使用了
spring-boot-maven-plugin
,配合spring-boot-starter-parent
就可以把SpringBoot应用打包成JAR来直接运行。
编写HTTP接口
-
在主程序的同级目录下,新建一个controller包
-
在包中新建一个Controller类
//核心:自动装配 原理!!! @RestController public class HelloController { //接口:http://localhost:8080/hello @RequestMapping("/hello") public String hello() { //调用业务,接收前端的参数 return "hello,world"; } }
-
编写完毕后,在主程序中启动项目,浏览器发起请求,看界面返回;
- 控制台输出了SpringBoot的banner
- 控制条输出了Tomcat访问的端口号
- 访问hello请求,字符串成功返回!
-
配置pom.xml,将项目打成jar包
<distributionManagement> <repository> <id>proficio-repository</id> <name>Proficio Repository</name> <url>file://${basedir}/target/deploy</url> </repository> </distributionManagement>
-
打成jar包后,就可以在任何地方运行了!
小结
简单几步,就完成了一个web接口的开发,SpringBoot就是这么简单,所以我们常用它来建立微服务项目!
彩蛋
自定义启动banner图案(贼酷)
在resources下新建banner.txt
即可,效果如下: