我们今天开始对SpringBoot的学习,本篇主要是Spring Boot的入门部分。
1、SpringBoot简介
引用SpringBoot在百度百科中的含义:
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
在学习之前我们可以先列出Spring Boot的优点,以供了解,其相关内容会在未来进行讲解。
- 快速创建独立运行的Spring项目以及与主流框架集成
- 使用嵌入式的Servlet容器,应用无需打成WAR包
- starters自动依赖与版本控制
- 大量的自动配置,简化开发,也可修改默认值
- 无需配置XML,无代码生成,开箱即用
- 准生产环境的运行时应用监控
- 与云计算的天然集成
2、微服务
了解微服务以前,我们可以相对的了解一下单体应用,什么是单体应用呢?
在单体应用的年代,一个软件应用,往往会将应用所有功能都开发和打包在一起,如图所示,这里将代码打成war包放置在Tomcat服务器上。但是,当用户访问量变大导致一台服务器无法支撑时怎么办呢?于是出现了负载均衡,后来又把静态文件分离出来形成了动静分离。但是呢所谓治标不治本,无论是负载均衡也好,动静分离也罢,都是改善和优化了部署环境,改变不了根本的缺点:
- 代码臃肿,应用启动时间长;(代码超过1G的项目都有!)
- 回归测试周期长,修复一个小小bug可能都需要对所有关键业务进行回归测试;
- 应用容错性差,某个小小功能的程序错误可能导致整个系统宕机;
- 伸缩困难,单体应用扩展性能时只能整个应用进行扩展,造成计算资源浪费;
- 开发协作困难,一个大型应用系统,可能几十个甚至上百个开发人员,大家都在维护一套代码的话,代码merge复杂度急剧增加。
所以在这种情况下我们今天的主角——“微服务”就应运而生了,我们先来看一下典型的微服务架构:
根据上图的内容即可以很容易理解微服务架构的大体流程,客户端调用不同的服务时会先经过服务网关来进行调用,而对服务的修改与上传又可以通过服务注册中心和服务配置中心来完成。
3、SpringBoot———HelloWorld
3.1、设计目标
3.2、创建一个Maven工程,在Maven中导入依赖Jar包
代码语言:javascript复制 <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.12.RELEASE</version>
</dependency>
</dependencies>
3.3、编写一个SpringBoot主程序、启动应用
代码语言:javascript复制package com.lizhengi;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* springBootApplication:标注一个主程序类,表示这个是一个Springboot应用
*/
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args) {
//Spring应用启动
SpringApplication.run(HelloWorldApplication.class, args);
}
}
3.4、编写一个Controller
代码语言:javascript复制package com.lizhengi.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* RestController:是spring4里的注解,是@ResponseBody和@Controller的缩写。
*/
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "hello SpringBoot,this is my first Application";
}
}
3.5、运行main方法、查看浏览器
到这里我们的第一个SpringBoot程序HelloWorld程序就完成了。
3.6、简化部署 3.6.1、添加maven插件
代码语言:javascript复制 <!-- 这个插件,可以将应用打包成一个可执行的jar包;-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3.6.2、使用mvn package进行打包
3.6.3、进入打包好的jar包所在目录找到jar包
3.6.4、使用 java -jar jar包名称 运行