配置文件是非常重要的,整个项目中所有的重要数据都是在配置文件中进行配置的例如:
如果没有配置文件的话,这些信息就无法进行配置了,数据库无法连接,日志无法查看等这些问题都是对于Spring Boot项目非常关键的,因此配置文件是特别重要的!
通过配置文件修改访问界面的端口
默认访问是8080端口:现在修改配置文件!
server.port=80
修改后重新启动:
成功修改了项目的端口号!
在配置文件中可以修改Spring Boot所有配置!可以参考: 网页链接
在配置文件中创建如下属性:
name=怀旧
password=123456
创建实体类 User.class
正常注入属性值:
@Component
public class User {
@Value("怀旧")
private String name;
@Value("123456")
private String password;
public User() {
}
public User(String name, String password) {
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String toString() {
return "User{name = " + name + ", password = " + password + "}";
}
}
使用测试:
@SpringBootTest
class TestApplicationTests {
@Autowired
private User user;
@Test
void contextLoads() {
System.out.println(user);
}
}
成功输出结果!
现在使用配置文件注入,修改实体类:
@Value("${name}")
private String name;
@Value("${password}")
private String password;
注入成功,但是输出中文乱码,这种情况需要修改idea的配置!
修改完成后,文件内容自动乱码,修改文件内容
name=怀旧
password=123456
重新测试:
数据获取成功!
当我们在目录下创建了一个自己的配置文件
name1=怀旧111
password1=65432
修改实体类读取自定义的配置文件:
@Value("${name1}")
private String name;
@Value("${password1}")
private String password;
测试运行:
运行报错,原因是自定义的配置文件不会被springboot托管,导致读取不到自定义配置文件中的数据,解决方案如下:
@PropertySource(value = "classpath:test.properties") // 在实体类上添加这个注解,指定需要使用的配置文件名名称,即可
public class User {
测试运行:
获取数据成功!
创建一个名为 application.yml 的配置文件
配置文件的写法如下(配置端口):
它是以 冒号 分割开并且每个值后面都必须有一个空格编写
我们可以在这个配置文件中定义在properties中的数据:
name: 怀旧
password: 123456
修改之前的实体类代码:
@Component
public class User {
@Value("${name}")
private String name;
@Value("${password}")
private String password;
运行测试:
数据获取成功!
但是对于yml格式的配置文件来说,它的功能还远远不止如此:
修改配置文件:
person:
name: 怀旧11
password: 123456
修改实体类:
@Component
@ConfigurationProperties(prefix = "person") // 指定装配配置文件下的那个属性
public class User {
private String name;
private String password;
测试运行:
获取数据成功!
创建一个实体类 Cat.java
@Component
public class Cat {
private String name;
private Integer age;
public Cat() {
}
public Cat(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String toString() {
return "Cat{name = " + name + ", age = " + age + "}";
}
}
修改 User.class
@Component
@ConfigurationProperties(prefix = "person")
public class User {
private String name;
private String password;
private Cat cat;
添加一个对象属性:并编写get,set,toString方法!
编写配置文件:
person:
name: 怀旧11
password: 123456
cat:
name: 小黄
age: 5
测试运行:
对象属性注入成功!
在对象属性中,还有一种写法,如下:
person:
name: 怀旧11
password: 123456
cat: {name: 小黄, age: 3}
测试运行:
结果同样输出成功!
person:
name: 怀旧11
password: 123456
cat: {name: 小黄, age: 3}
# 注入 数组/列表
list1:
- aa
- bb
- cc
# 注入 boolean 数据
flag: false
# 注入 Map
map1:
aa: bb
cc: dd
# 日期
date1: 2024/4/17
编写对应实体类获取数据:
@Component
@ConfigurationProperties(prefix = "person")
public class User {
private String name;
private String password;
private Cat cat;
private List<String> list1;
private boolean flag;
private Map<String, String> map1;
private Date date1;
测试运行:
输出结果如下:
User{
name = 怀旧11,
password = 123456,
cat = Cat{name = 小黄, age = 3},
list1 = [aa, bb, cc],
flag = false,
map1 = {aa=bb, cc=dd},
date1 = Wed Apr 17 00:00:00 CST 2024}
所有数据都获取成功!
生成随机数:
password: ${random.int}
再次运行:
生成一个uuid:
name: ${random.uuid}
判断属性:
password: ${person.hello:hello111} #作用; 判断person.hello是否存在,如果存在或/有值 则password的值就为person.hello 否则值为 hello111
测试:当前没有 person.hello ,获取password应该是一个默认值hello111
修改配置:
password: ${person.name:hello111}
当前name存在,所以 password 就等于 person.name 的值
注解:
@Null 被注释的元素必须为null
@NotNull 被注释的元素不能为null
@AssertTrue 被注释的元素必须为true
@AssertFalse 被注释的元素必须为false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max,min) 被注释的元素的大小必须在指定的范围内。
@Digits(integer,fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(value) 被注释的元素必须符合指定的正则表达式。
@Email 被注释的元素必须是电子邮件地址
@Length 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串必须非空
@Range 被注释的元素必须在合适的范围内
使用介绍博客:网页链接
评论
登录后才可以进行评论哦!