初识SpringBoot
1. 什么是SpringBoot
1.1 Spring Boot的概念
SpringBoot
是一个框架,一种全新的编程规范,它的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件,所以SpringBoot是一个服务于框架的框架,服务范围是简化配置文件。
Spring Boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像Maven整合了所有的Jar包,Spring Boot整合了所有的框架。
1.2 为什么要使用 Spring Boot
优点:
1.3 Spring Boot可以做什么
让文件配置变的相当简单、让应用部署变的简单(SpringBoot内置服务器Tomcat、Jetty等,并装备启动类代码),可以快速开启一个Web容器进行开发。
1.4 Spring Boot 的特点
-
搭建项目快,几秒钟就可以搭建完成;
-
Spring Boot让配置变的简单,Spring Boot的核心理念:约定大约配置,约定了某种命名规范,可以不用配置,就可以完成功能开发,比如模型和表名一致就可以不用配置,直接进行CRUD(增删改查)的操作,只有表名和模型不一致的时候,配置名称即可;
-
内嵌容器,省去了配置Tomcat的繁琐;
-
让测试变的简单,内置了JUnit、Spring Boot Test等多种测试框架,方便测试;
-
方便监控,使用Spring Boot Actuator组件提供了应用的系统监控,可以查看应用配置的详细信息。
1.5 SpringBoot的优点
-
简化配置
-
减少配置:Spring Boot可以对一些配置进行简略,它采用了“约定优于配置”的原则,将一些约定的最优配置封装在代码之中。只要使用Spring Boot搭建项目,这些配置就会自动完成,可以减少开发者在项目搭建时关注点,让开发者集中精力编写业务处理的代码。
-
优化配置:配置信息可以写入一个单独的配置文件——application.properties(yml)中
-
配置信息更加集中,方便对配置信息的管理。
-
编写方便,可以使用代码提示的方式进行配置代码的编写。
-
-
-
简化部署
-
Spring Boot搭建项目有内置的Web容器。
-
-
简化监测
-
Spring Boot可以提供项目的运行信息,比如应用的基本信息、健康度信息、运行指标、环境变量信息、线程相关信息和请求调用轨迹等。
-
-
与主流框架的无缝集成
-
方便与Redis、Swagger、Sorl和Elastic Search等很多主流的技术进行无缝集成,方便项目开发。
1.6 如何使用 Spring Boot
-
在使用Spring Boot搭建项目之前,首先需要明确环境要求。
Spring Boot环境要求
环境 | 版本 |
---|---|
JDK | 8或11 |
项目构建工具 | Maven 3.3+或Gradle4.4+ |
Spring Framework | 5.1.6Release或更高版本 |
Web | Tomcat9+或Jetty 9.4+ |
步骤:
1.新建 Spring Boot项目
第一步:启动开发工具IDEA,先创建project,命名为“Spring Boot”,然后创建Module。依次单机菜单栏中“
File——>New——>Module”。
第二步:在创建Module的窗口中,选择左侧菜单中的“Spring Initializr”,选择Module SDK为JDK1.8。单击Next。
使用Maven进行项目构建,需要根据需求设置Maven坐标,设置项目的构建方式和打包方式,设置完成后单击“Next”按钮,跳转到选择版本和组件的窗口。
第三步:在选择版本和组件的窗口中,选择Spring Boot版本为2.1.5。选择与Web项目相关的组件,单击Next,跳转到设置项目名称和项目保存位置的窗口。
第四步:在设置项目名称和项目保存位置的窗口中,设置项目名称和项目的存储位置,单击Finsih完成构建。
2.编写Java代码
打开Spring Boot项目 src/main/java 目录,创建包名controller(包必须和*Application文件同级),在报下创建控制器类。
@Controller public class SayHelloController { @RequestMapping("sayHello") @ResponseBody public String sayHello() { return "Hello Spring Boot!"; } }
3.启动并测试
2. 详解 Spring Boot项目
2.1 三个核心文件
-
pom文件
-
父依赖spring-boot-starter-parent
<parent>标签中的内容是父依赖,作用:
-
限定Java的版本。
-
限定源码的文件编码方式:默认UTF-8。
-
管理依赖:在父依赖中设置公共依赖的版本号。
-
打包支持:设置一些使用Maven对项目进行打包的规则。
-
动态识别资源:识别一些特定名称的资源文件。
-
识别插件配置
-
-
依赖spring-boot-starter-web
-
依赖spring-boot-start-test
[创建项目时,选择的是加入Web组件,所以pom文件<dependencies>中第一个依赖是spring-boot-starter-web。]
[在不选择添加任何组件的情况下,pom文件<dependencies>中第一个依赖是spring-boot-starter]
-
-
启动类
-
main()方法
-
组合注解@SpringBootApplication
-
@Target
-
@Retention
-
@Document
-
@Inherited
-
@SpringBootConfiguration :可代替Spring的applicationContext.xml配置文件
-
@EnableAutoConfiguration :启动Spring Boot的自动配置
-
@ComponentScan :扫描启动类同目录及子目录下的所有注解标注的组件
-
-
-
application.properties文件
-
包含Spring Boot项目大部分的配置信息
-
放在项目资源路径resources的根路径下
-
Spring Boot项目能够自动识别
YAML使用缩进来表示层级关系,利于阅读
大小写敏感
使用空格缩进
属性值前面要有空格隔开
2.2 Spring Boot 项目启动方式
-
使用内置的Web容器启动
Spring Boot支持三种内置容器:Tomcat、Jetty和Undertow
默认的内置Web容器是Tomcat
修改POM文件可以替换内置的Web容器
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <!-- 禁用Tomcat容器 --> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!-- 添加与Jetty相关的依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency>
在本地Web容器中启动
-
通过Maven将项目打包成war文件
-
将war文件拷贝至本地Web容器中部署
运行使用Maven启动项目
-
进入项目根路径
-
执行 mvn spring-boot:run 命令
使用Java命令启动项目
-
通过Maven将项目打包成jar文件
-
进入jar文件所在目录
-
使用 java -jar 命令运行jar文件
3. 多模块项目
3.1 在IDEA中使用MAVEN构建多模块项目
创建父项目
-
父项目中不需要编写任何代码,可以把src目录删除
创建子模块,通常按职责划分子模块
-
beans:存放实体类
-
common:存放工具类、枚举类等项目中的核心类
-
dao:存放数据访问层代码
-
service:存放业务层代码
-
controller:存放控制器层代码
配置模块之间的依赖
Maven依赖有继承性和传递性
-
在父项目中统一管理通用的依赖,子模块继承父项目
-
子模块之间可以直接线性依赖
<!-- 父项目pom文件片段 --> <groupId>com.bdqn</groupId> <artifactId>parent</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <modules> <module>beans</module> <module>common</module> <module>dao</module> …… </modules> <!-- 子模块pom文件片段 --> <parent> <artifactId>parent</artifactId> <groupId>com.bdqn</groupId> <version>1.0-SNAPSHOT</version> </parent>