SpringBoot基础
基本工程
快速建立SpringBoot工程(Spring Intailizr)
工程结构
- application.properties配置文件
- templates 放web页面
- static静态资源 css、js文件等等
工程配置分析(pom.xml)
- Spring程序和SpringBoot程序对比
类/配置文件 | Spring | SpringBoot |
---|---|---|
pom文件中的坐标 | 手动添加 | 勾选添加 |
web3.0配置类 | 手动制作 | 无 |
Spring/SpringMVC配置类 | 手动制作 | 无 |
控制器类 | 手动制作 | 手工制作 |
快速启动
- 右侧 → Maven → Lifecycle → package
- 左侧 → target → 对应工程.jar → 右键 → Open in → Explorer (打开所在文件夹)
- 该jar包即可发给前端工作人员
- 在该文件夹路径框直接输入cmd + enter
- 输入:java -jar 对应工程.jar(这个打个首字母 + Tab即可补全文件名)
注意事项
jar支持命令行启动需要依赖maven插件支持,请确认打包时是否具有SpringBoot对应的maven插件
这个插件应该在SpringBoot建立时自动导入的。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
pom.xml分析
SpringBoot起步依赖
- 版本管理 (若干properties + 若干依赖)
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
- 依赖
<dependencies>
<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>
主启动类/引导类
- 目前pom.xml是web依赖,那么启动类启动就是web程序
换依赖
- 起步依赖中 排除依赖
- 添加新依赖,不需要添加版本号
- 比如Jetty比Tomcat更轻量级,可扩展性更强(相较于Tomcat),谷歌应用引擎(GAE)已经全面切换Jetty
基础配置
SpringBoot有多种配置方式
- properties
- yaml
- yml
存在多种配置时,优先级:
- properties
- yml
- yaml
自动提示功能解决方案
yaml
基本语法
- key: value;kv之间有空格
- 大小写敏感
- 使用
缩进
表示层级关系 - 缩进
不允许使用tab
,只允许空格 - 缩进的空格数不重要,只要相同层级的元素左对齐即可
- '#'表示
注释
字符串无需加引号
,如果要加,单引号''、双引号""表示字符串内容会被 转义、不转义
数据类型
字面量
:单个的、不可再分的值。date、boolean、string、number、null
k: v
对象
:键值对的集合。map、hash、set、object
#行内写法:
k: {k1:v1,k2:v2,k3:v3}
#或
k:
k1: v1
k2: v2
k3: v3
- 数组:一组按次序排列的值。array、list、queue
#行内写法:
k: [v1,v2,v3]
#或者
# - 代表一个元素
k:
- v1
- v2
- v3
实例
@Data
public class Person {
private String userName;
private Boolean boss;
private Date birth;
private Integer age;
private Pet pet;
private String[] interests;
private List<String> animal;
private Map<String, Object> score;
private Set<Double> salarys;
private Map<String, List<Pet>> allPets;
}
@Data
public class Pet {
private String name;
private Double weight;
}
用yaml表示以上对象
person:
userName: zhangsan #如何用双引号就不转义,但是用单引号 转义字符会被转义
boss: false
birth: 2019/12/12 20:12:33
age: 18
pet:
name: tomcat
weight: 23.4
interests: [篮球,游泳]
animal:
- jerry
- mario
score:
english:
first: 30
second: 40
third: 50
math: [131,140,148]
chinese: {first: 128,second: 136}
salarys: [3999,4999.98,5999.99]
allPets:
sick:
- {name: tom}
- {name: jerry,weight: 47}
health: [{name: mario,weight: 47}]
读取
- 基本数据类型
@Value("$lesson") //yaml中lesson:SpringBoot
private String lesson;
- 数组
@Value("$subject[0]") //yaml如下
private String subject0; //java
subject:
- java
- 前端
- 大数据
- 类
@Value("$subject[0]") //yaml如下
private String subject0; //java
enterprise
name:itcast
age:16
tel:4006184000
subject:
- java
- 前端
- 大数据
- 直接加载全部
@Autowired
private Environment environment;
public void get(){
System.out.println(environment.getProperty("enterprise.name"));
}
enterprise
name:itcast
age:16
tel:4006184000
subject:
- java
- 前端
- 大数据
- @ConfigurationProperties + @Component
假设有配置文件application.properties
mycar.brand=BYD
mycar.price=100000
只有在容器中的组件,才会拥有SpringBoot提供的强大功能
@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {
private String brand;
private Integer price;
}
set...
get...
toString...
//调用
@Autowired
private Car car;
public void get(){
System.out.println(car);
}
多环境配置
分新旧两种写法,多个环境之间以“---”隔开
#设置启用的环境
spring:
profiles:
active: test
---
#开发
spring:
profiles:dev
server:
port: 80
---
#生产
spring:
profiles:pro
server:
port: 81
---
#测试 过时格式
spring:
profiles:test
server:
port: 82
---
#推荐格式
spring:
config:
activate:
on-profile: other
server:
port: 83
额外说一下properties相关写法
application.properties中
spring.profiles.active=dev
application-dev.properties中
server.port=8081
多环境命令行启动参数设置
- 带参数启动SpringBoot
java -jar springboot.jar --spring.profiles.active=test
临时加参数,启动测试环境
包括以下操作:
java -jar springboot.jar --server.port=88
java -jar springboot.jar --server.port=88 --spring.profiles.active=test
多环境开发控制(Maveb和Boot的兼容问题)
-
1.maven设置多环境
-
2.SpringBoot中引用maven属性
-
3.执行maven打包指令
-
4.
配置文件分类
- SpringBoot中4级配置文件
target(文件路径)下
1级 file:config/application.yml
2级 file:application.yml
resources(就是类路径)下
3级 classpath:config/application.yml
4级 classpath:application.yml - 作用
- 1级和2级留作系统打包后设置通用属性
- 3级和4级用于系统开发阶段设置通用属性
整合第三方技术
SpringBoot整合JUnit
回顾Spring整合JUnit
SpringBoot整合JUnit
- 名称:@SpirngBootTest
- 类型:测试类注解
- 位置:测试类定义上方
- 作用:设置JUnit加载的SpringBoot启动类
- 范例:
@SpringBootTest(classes = SpringBoot07JunitApplication.class)
class SpringBoot07JunitApplicationTests{
}
- 相关属性 classes:设置SpringBoot启动类
- 注意事项:如果测试类在SpringBoot启动类的包或者子包中,可以省略启动类的设置,也就是省略classes的设定
SpringBoot实现SSM整合
内容:
- SpringBoot整合Spring(不存在)
- SpringBoot整合SpringMVC(不存在)
- SpirngBoot整合Mybatis(主要工作)
回顾Spring整合Mybatis
- SpringConfig
- 导入JdbcConfig
- 导入MybatisConfig
- JDBCConfig
- 定义数据源(加载properties配置项:driver、url、username、password)
- 定义数据源(加载properties配置项:driver、url、username、password)
- MyBatisConfig配置
- 定义SqlSessionFactoryBean
- 定义映射配置
SpringBoot整合Mybatis
步骤: