SpringBoot
1.SpringBoot介绍
参考百度百科: https://baike.baidu.com/item/Spring%20Boot/20249767?fr=aladdin
Spring Boot是由Pivotal团队提供的全新框架, 其设计目的是用来简化新Spring应用的初始搭建以及开发过程。
人们把Spring Boot 称为搭建程序的脚手架
。其最主要作用就是帮我们快速的构建庞大的spring项目,并且尽可能的减少一切xml配置,做到开箱即用,迅速上手,让我们关注与业务而非配置。
该框架非常火,目前新开项目几乎都是基于SpringBoot搭建,非常符合微服务架构要求,企业招聘大多都要求有SpringBoot开发经验,属于面试必问的点。
优缺点
- 优点:
- 创建独立运行的Spring应用程序
- 嵌入的Tomcat, 无需部署war文件
- 简化maven配置
- 自动配置spring
- 提供生产就绪型功能, 如: 日志, 健康检查和外部配置等
- 不要求配置XML
- 非常容易和第三方框架集成起来
- 缺点:
- 版本更新较快, 可能出现较大变化
- 因为约定大于配置, 所以经常出现一些很难解决的问题
2.SpringBoot快速入门
项目的创建
方式1: 使用网站创建SpringBoot工程
SpringBoot建议使用官方提供的工具来快速构建项目,网站:https://start.spring.io/ ,IDEA自带该功能, 但需要联网使用
注意:官方提供的构建工具默认只能选择固定的版本,有些版本之间的差异非常大,所以如果需要选择某个版本建议项目构建后,自行在pom.xml文件中修改版本,建议学习阶段选择2.1.3版本
选定需要的内容后, 将工程下载导入, idea等编程软件即可.
方式2: 使用idea创建SpringBoot项目
下面的操作就与在页面中的操作相同了
选择需要的依赖
确定项目名和存储位置
上面的两种方式其实是, 差不多的, 只是第二种方式不需要, 再将项目导入idea中
方式3: 创建普通Maven工程
添加依赖, 将正常创建的SpringBoot的项目的依赖导入普通项目
<!-- 打包方式jar包 -->
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
并自己创建主方法即可
提出疑问
-
之前的web应用打包是war,为什么现在的打包方式是jar
-
当前项目继承的spring-boot-starter-parent项目有什么用
-
导入的依赖spring-boot-starter-web有什么用
-
占用8080端口的Tomcat9服务器哪来的
-
@SpringBootApplication注解有什么用
-
main方法中执行的代码SpringApplication.run(…)有什么用
入门案例分析
父工程坐标
SpringBoot提供了一个名为spring-boot-starter-parent的工程,里面已经对各种常用依赖(并非全部)的版本进行了管理,我们的项目需要以这个项目为父工程,这样我们就不用操心依赖的版本问题了,需要什么依赖,直接引入坐标即可!
继承是 Maven 中很强大的一种功能,继承可以使得子POM可以获得 parent 中的部分配置(groupId,version,dependencies,build,dependencyManagement等),可以对子pom进行统一的配置和依赖管理。
- parent项目中的dependencyManagement里的声明的依赖 , 只具有声明的作用,并不实现引入,因此子项目需要显式的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本
- parent项目中的dependencies里声明的依赖会被所有的子项目继承
web启动器
这是SpringBoot提供的web启动器 , 是一个快速集成web模块的工具包 , 包含springmvc,jackson相关的依赖
以及嵌入了Tomcat9服务器,默认端口8080
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
需要注意的是,我们并没有在这里指定版本信息。因为SpringBoot的父工程已经对版本进行了管理了。
这个时候, 我们就会发现项目中出现了大量的依赖:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eu5NrUH2-1604668675871)(D:\JAVA23\峰哥第六阶段\03-springboot(o)]\springboot课件md\images\decp.png)
这些都是SpringBoot根据spring-boot-starter-web这个依赖自动引入的,而且所有的版本都已经管理好,不会出现冲突。
SpringBoot非常优秀的地方在于提供了非常多以spring-boot-starter-* 开头的开箱即用的工具包,常见工具包有以下一些:
spring-boot-starter: 核心的工具包,提供了自动配置,日志和YAML配置支持
spring-boot-starter-aop: 提供了快速集成SpringAOP和AspectJ的工具包
spring-boot-starter-freemarker: 提供了快速集成FreeMarker的工具包
spring-boot-starter-test: 提供了测试SpringBoot应用的工具包
spring-boot-starter-web: 提供了快速集成web模块的工具包,包括基于SpringMVC,Tomcat服务器等
spring-boot-starter-actuator: 提供了生产环境中使用的应用监控工具包
spring-boot-starter-logging: 提供了对日志的工具包,默认使用Logback
打包独立运行
对于SpringBoot项目来说无论是普通应用还是web应用,其打包方式都是jar即可,当然web应用也能打war包,但是需要额外添加许多插件来运行,比较麻烦.
默认的Maven打包方式是不能正常的打包SpringBoot项目的,需要额外的引入打包插件,才能正常的对SpringBoot项目打成jar包,以后只要拿到该jar包就能脱离IDE工具独立运行了
<!-- pom.xml中添加插件 -->
<build>
<plugins>
<!-- SpringBoot打包插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- 使用maven的package命令进行打包
- 使用命令java -jar xxx.jar 运行jar包 ( --server.port=80)