学习之前我们先回顾一下Spring和了解一下SpringBoot
什么是Spring
Spring是为了解决企业级应用开发的复杂性而创建的,简化开发
Spring是如何简化Java开发的
为了降低Java开发的复杂性,Spring采用了4种关键策略
- 基于POJO的轻量级和最小入侵性编程
- 通过IOC,依赖注入(DI)和面向接口实现轻松耦合
- 基于切面(AOP)和惯例进行声明式编程
- 通过切面和模板减少样式代码
什么是SpringBoot
SpringBoot基于Spring开发,SpringBoot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来代替Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。SpringBoot以约定大于配置的核心思想,默认帮我们进行了很多配置,多数SpringBoot应用只需要很少的Spring配置。同时它集成了大量常用的第三方库配置(例如:Redis、Mongodb,Jpa、RabbitMQ、等等),SpringBoot应用中这些第三方库几乎可以零配置的开箱启用。
SpringBoot的优点
- 为所有Spring开发者提供更快的入门
- 开箱即用,提供各种默认配置来简化项目配置
- 内嵌式容器简化Web项目
- 没有冗余代码生成和XML配置的要求
在正式学习SpingBoot之前,我们首先来了解一下微服务
什么是微服务
微服务是一种架构风格,他要求我们在开发一个应用的时候,这个应用必须构建成一系列小服务的组合。可以通过http的方式进行互通。
单体应用架构
所谓单体应用架构(all in one),是指我们将一个应用中的所有应用服务都封装在一个应用中。
无论是ERP、CRM或是其它什么系统,你都把数据库访问,web访问,等等各个功能放到一个war包内。
优点:易于开发和测试;也十分方便部署;当需要扩展时,只需要将war复制多份,然后放到多个服务器上,再做个负载均衡就可以了。
缺点:哪怕我要修改一个非常小的地方,都需要停掉整个服务,重新打包,部署这个应用的war包,特别是对于一个大型应用,我们不可能把所有内容都放在一个应用里面,我们如何维护、如何分工合作都是问题。
微服务架构
all in one 的架构方式,我们把所有的功能单元放在一个应用里面。然后我们把整个应用部署到服务器上,如果负载能力不行,我们将整个应用进行水平复制,进行扩展,然后在负载均衡。
所谓微服务架构,就是打破之前all in one 的架构方式,把每个功能元素独立出来。
优点:
- 节省了调用资源
- 每个功能元素的服务都是一个可替换的、可独立升级的软件代码
接下来我们开始正式学习SpringBoot
官网:Spring Boot
第一个SpringBoot程序
我们使用idea创建一个SpringBoot项目
生成的项目目录结构
DemoApplication解析
pom.xml文件解析
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--SpringBoot的父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--web依赖,内嵌tomcat,dispatcherServlet-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--单元测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!--maven的打包插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
接下来我们来写我们的第一个SpringBoot程序
注:一定要在启动类平级的目录下建包!!!
启动程序并访问。
修改端口号
我们发现SpringBoot启动时默认使用的端口号是8080,在实际开发中,不可能所有的项目都使用8080端口,那我们是否可以修改这个端口号呢?如果可以改,应该怎么操作呢?
在SpringBoot中修改端口号非常的简单,只需要在applicaiton.properties或application.yaml配置文件中修改配置即可
重新启动项目看看端口号是否发生改变
发现端口号已经发生改变
自定义banner
在Resource目录下新建banner.txt文件
重新启动项目看看会出现什么样的效果