文章目录
1. 聊聊Spring
当看到这篇文章时,对spring的已经有了一定的了解,大家可能在使用spring时感觉有点迷迷糊糊的,大家可以想一下,在没有使用spring框架时,手动写servlet的感觉,不仅开发的复杂难度大,而且开发效率低。
在使用spring后,使用xml和注解的方式进行开发,使开发效率大幅度提高,充分体现了Spring的组件代码是轻量级的,但是配置文件却堪称重量级的(在熟练使用spring配置后,有时的粗心,可能导致错误的情况),使用spring的不爽的两件事之一:
- 开发项目浪费在配置上时间长。在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间
- 项目的依赖管理容易出错。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开
发进度。
为了解决上述的问题,Spring Boot就诞生了。
SpringBoot基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率。
2. Spring Boot简介
2.1 Spring Boot 特征
- 创建独立的Spring应用程序
- 直接嵌入Tomcat,Jetty或Undertow(无需部署WAR文件)
- 提供自以为是的“入门”依赖项,以简化构建配置
- 尽可能自动配置Spring和3rd Party库
- 提供可用于生产的功能,例如指标,运行状况检查和外部化配置
- 完全没有代码生成,也不需要XML配置
2.2 Spring Boot核心功能
- 起步依赖
起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。
简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。 - 自动配置
Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是Spring自动完成的。
3. 创建Spring Boot
1.创建模块,按图选择
2.自行填写GroupId和ArtigactId,注意创建的Package是不是你想要的
3.我们选择web下的spring web 进行添加
4.填写模块的名字和存放的位置(我已修改),点击完成
5.将java和resources转换成对应的文件格式
6.编写controller类(com.chao.controller.FirstController)
7.启动springboot
- 方式一:
- 方式二:mvn spring-boot:run
8.显示结果
4.SpringBoot的热部署
大家可能对名字有点懵,大家先不要慌,其实大家都使用过,在开发中反复修改类、页面等资源,每次修改后都是需要重新启动才生效,热部署就是在修改代码后不重启就能生效,需要怎么做呢?三步搞定,听我细细说来:
- pom.xml 中添加如下配置
<!--热部署配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
- 在setting中更改此配置,记得apply和保存啊
- 按住Shift+Ctrl+Alt+/,选择Registry
它是按照首字母排列的慢慢找下
这样热部署就完成了,你就可以在不重启的情况下,进行调试代码了。
(注意:你修改代码后,等控制台有对应日志打出在访问,差不多3s就可以了)
5. 两个依赖一个引导类
刚才使用的模板创建的springboot,可能过程比较繁琐,大家还是按要求做下来,能够坚持已经很棒了,我给大家说说springboot模板到底有什么东西,为什么他能省去我们半个小时的配置文件。
说白了就两个依赖和一个引导类。
5.1 添加SpringBoot的起步依赖
项目要继承SpringBoot的起步依赖spring-boot-starter-parent,这是使用springboot所必须的。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.13.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
按住Ctrl点击pom.xml中的spring-boot-starter-parent,
spring-boot-starter-parent主要有:
继承于spring-boot-dependencies
引入resources的资源
定义了一些插件
按住Ctrl点击pom.xml中的spring-boot-starter-dependencies,
spring-boot-dependencies主要(版本控制)有:
maven的版本控制
mysql的版本控制
…有点多
5.2 添加web的启动依赖
SpringBoot要集成SpringMVC进行Controller的开发,所以项目要导入web的启动依赖,这是我们选择使用的。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
按住Ctrl点击pom.xml中的spring-boot-starter-web,
spring-boot-starter-web主要有:
tomcat的版本控制
hibernate的版本控制
spring-web的版本控制
spring-webmvc的版本控制
5.3 引导类
package com.chao;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//声明这是一个springboot的引导类
@SpringBootApplication
public class SpringbootDemoApplication {
public static void main(String[] args) {
//run表示运行springboot的引导类
//参数:springboot引导类的字节码对象
SpringApplication.run(SpringbootDemoApplication.class, args);
}
}
那**@SpringBootApplication**神奇的注解里面到底有什么呢?
- @SpringBootConfiguration里由@Configuration实现,具备标注该类时是spring的配置类
- @ComponentScan spring中的组件扫描,扫描范围:引导类同级和其子级的包,所以引导类最好配置到根目录下
- @EnableAutoConfiguration 自动配置的注解 (注解如下)
– @Import 当前的EnableAutoConfiguration的注解下引入其他的注解类(代码有点深,挖到最后就默认加载ci注解包,里面有大量的配置信息)
6.Spring Boot的文件类型
此文件中包含我们常用的配置,例如server.servlet.context-path(访问路径)和server.port(端口号):
我们可以使用配置文件进行修改
默认支持下图三种配置文件,默认加载的位置时resources下
注意:配置文件的加载顺序,后者会把前者覆盖掉
添加application.yml文件
# 普通键值对
name: wxc
# server.port=8081 包含层级的
server:
port: 8081
# 配置对象
student:
name: 小王
age: 18
address: China
# 或者 student: {name: 小王,age: 18,addr: China}
# 配置 Map
mapName:
name1: a
name2: b
name3: b
# 配置数组(List、Set)数据
arrString:
- xiaoA
- xiaoB
- xiaoC
# 或者 arrString: [xiaoA,xiaoB,xiaoC]
#集合
students:
- name: zhangsan
age: 18
score: 100
- name: lisi
age: 28
score: 88
- name: wangwu
age: 38
score: 90
# 注意-后面的空格
- 访问普通键值对
- 访问对象
${student.name}一个一个取太麻烦
使用@ConfigurationProperties一键搞定
第一步:添加student对象的属性(name,age,address)并添加get,set方法
第二步:添加@ConfigurationProperties注解,并添加前缀(name,age,address都是student的属性)
即:@ConfigurationProperties(prefix = "student")
其实到这里已经能访问了,但是大家注意上面有一个警告。
没有发现Spring Boot 注解的处理器
有强迫的程序员都会处理掉的,于是有了第三步。
第三步:点击右上角 Open Documentation…
默认跳转到下界面 (不要随意滑动,免得找不到依赖)
将依赖添加到pom.xml文件即可