拓展 点击跳转哦~:SpringBoot系列学习汇总和拓展
@[toc]
前言
- 建议大家引入lombok包,这样实体类就不用每次都自己手写get、set、tostring等方法,极度推荐哦~
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
- 加上@Data注解后,编译器会自动帮我们加上get、set等方法,极大的减少了我们的代码量,看起来舒服很多~
一、application.properties
-
语法结构:
- key=value
-
作用:
- 修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了;
-
对比传统:
<server>
<port>8888<port>
</server>
- 对比现在:简约了很多。
二、application.yml
-
官方推荐我们使用的是yml格式,因为他更加简约,功能反而更加强大。
-
语法格式:key:空格 value
- 空格不能省略
- 以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。
- 属性和值的大小写敏感
-
yml写入数组:以下两种写法都是合法的哦~
-
yml写入对象:以下两种写法都是合法的哦~
三、yml注入配置文件
3.1、@Value注入(老版)
- 实体类
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Data
@Component
public class Person {
@Value("小小丁小小")
private String name;
@Value("24")
private Integer age;
@Value("175")
private String high;
@Value("捕鱼")
private String like;
}
- 单元测试执行结果
- 弊端
- 如果该类特别复杂的话,写起来比较麻烦。
3.2、yml注入
- ①新建实体类,并加上@Data注解
import lombok.Data;
@Data
public class Student {
private String name;
private Integer age;
private String high;
private String like;
}
- ②编写yml配置文件:
server:
port: 7777
student:
name: 大大丁大大
age: 23
high: 173
like: 钓鱼
- ③ 实体类增加@Component,@ConfigurationProperties(prefix = "Student")注解
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
private String name;
private Integer age;
private String high;
private String like;
}
- 注意点:会爆红,但是不影响程序的执行,我们可以去除这个爆红。点击Open Documentation
点击这里也可以啦~ pom文件中添加该处引入即可。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
-
完美解决
-
④编写单元测试,注入实体类
import com.dyjTest.dyjProject.entity.Student;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class DyjProjectApplicationTests {
@Autowired(required = false)
Student student;
@Test
void contextLoads() {
System.out.println(student);
}
}
执行结果如下:
呀乱码了!解决TA!
再次执行:结果如下完美解决!!
- 总结
四、@PropertySource 加载指定的配置文件
-
@PropertySource: 加载指定的配置文件
-
@configurationProperties: 默认从全局配置文件中获取值;
-
①新建person.yml
-
②实体类
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Data
@Component
@PropertySource("classpath:person.yml")
public class Person {
@Value("${name}")
private String name;
private Integer age;
private String high;
private String like;
}
- ③执行单元测试结果如下:
五、配置文件占位符
- 占位符生成随机数
${random.value}、${random.int}、${random.long}
${random.int(10)}、${random.int[1024,65536]}
六、多个yml配置文件的优先级
-
如果同时存在properties和yml两个配置文件,如果不冲突的话,就会互相补充,反之以properties为主。
-
可以放在以下四个位置
-
①根目录下
-
②根目录的config目录里
-
③resources目录下的config目录里
-
④resources目录下
-
执行以下看下优先级顺序 ①同时存在:执行的是 根目录的config目录里的配置文件
②去除①的前提:执行的是 根目录下的配置文件
③去除①②的前提:执行的是 resources目录下的config目录里的配置文件
④去除①②三的前提:才会执行 resources目录下 也就是默认所在的位置
- 总结顺序:②>①>③>④
- 根目录的config目录里的配置文件 > 根目录下的配置文件 > resources目录下的config目录里的配置文件 > resources目录下(默认位置)
七、开发时多环境配置的文件的使用
7.1、指定配置文件
- 在实际开发中,我们可能会有很多套环境,比如开发环境(dev)、灰度环境(pre)、线上环境(prod),我们需要多个配置文件来管理这些环境的配置信息。
- yml支持多环境配置,如下:
- 在主配置文件中可以通过:指定根据哪个配置文件来启动项目
spring:
profiles:
active: 环境名
- 试试看:
- 指定dev
- 指定prod
yml是不是贼方便?大大节省了我们的工作量呀~~
7.2、实际开发中如何自动选择配置文件
- 在实际工作中我们也不可能说手动去指定配置文件,不然每次发包都得指定,多麻烦哦~
- 下面我们将上面的方法结合pom.xml组合优化一下,让ta自己识别我们所需打包的环境
- ①pom文件新增打包选择
<!--打包选择环境-->
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>pre</id>
<properties>
<env>pre</env>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
</profiles>
刷新maven,可以看到我们的maven结构发生了变化:
- ②将主配置文件的指定该为占位符
spring:
profiles:
active: '@env@'
- ③选择指定环境启动项目:完美达成我们的需求!!!
7.3、yml单文件多配置
- yml还可以实现单文件多配置呢
- 语法格式如下
server:
port: 6666
---
server:
port: 7777
---
server:
port: 8888
- properties不支持这种写法
关于application配置文件的玩法到此就告一段落了~
路漫漫其修远兮,吾必将上下求索~ 如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧~转载请注明出处哦~