赞
踩
在整个项目中所有重要的数据都是在配置文件中配置的,比如:
SpringBoot 配置文件主要分一下两种格式:.properties和.yml格式
【properties和yml】
- properties 可以和 yml ⼀起存在于⼀个项目当中,当 properties 和 yml ⼀起存在⼀个项目中时,如果配置文件中出现了同样的配置,比如 properties 和 yml 中都配置了“server.port”,那么这个时候会以 properties 中的配置为主,也就是 .properties 配置文件的优先级最高,但加载完 .properties ⽂件之后,也会加载 .yml 文件的配置信息。
- properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配置文件格式,这样可以更好的维护(降低故障率)
注意:配置文件的名字一定是application
properties是以键值对的形式配置的,key和value之间使用"="连接
yml格式很好的解决了这个问题
在properties中除了可以配置系统的参数外,还可以配置用户自定义的内容
如果想在项目中读取配置文件的内容,可以通过@Value注解来读取
package com.example.demo; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class ReadPropertis { @Value("${server.port}") //格式一定是 ${key}的形式 private int port; //不仅可以读取系统的配置信息,也可以读取用户自定义的配置信息 @RequestMapping("/hi") public String displayPort(){ return "port:"+port; } }
yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中文就是“另⼀种标记语言”。
【yml的优点】
yml 是树形结构的配置文件,它的基础语法是“key: value”,注意 key 和 value 之间使用英文冒汗加空格的方式组成的,其中的空格不可省略
【使用yml连接数据库的写法】
【yml的配置多级目录的规则】
yml 读取配置的方式和 properties 相同,使⽤ @Value 注解即可
【注意事项】
配置文件中内容:
读取配置文件的结果:
结论:
- 什么都不加和加了单引号中的转义字符原样输出
- 双引号中的转义字符会发挥出其语义,例如\n,就会产生换行效果
student:
id: 1
name: Java
age: 18
另一种行内写法:和上面写法等价
student2: {id: 1,name: wp,age: 19}
@Value只能用来读取属性,而不能读取整个对象,要想读取整个对象需要使用@ConfigurationProperties注解:
首先要创建一个student类
package com.example.demo; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @ConfigurationProperties(prefix = "student2") //将配置文件中的student2配置赋值给当前对象 @Component public class Student { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
使用student对象
@Autowired()
private Student student;
@PostConstruct
public void postConstruct() {
System.out.println(student.getName());
System.out.println(student.getAge());
}
执行结果:
注意:以上代码中的 getter 和 setter 方法不能省略,因为ConfigurationProperties注解在实现时是通过set方法给属性赋值的
dbtypes:
list:
- mysql
- db2
- oracle
行内写法:
dbtypes2: {list: [mysql,db2,sqlserver]}
读取集合:
package com.example.demo; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; @Component @ConfigurationProperties(prefix = "dbtypes") @Data //生成setter和getter方法 public class Config { private List<String> list; //此处的变量名必须和配置文件中的配置的集合名字相同 }
@Autowired
private Config config;
@PostConstruct
public void postConstruct() {
System.out.println(config.getList().get(0));
System.out.println(config.getList().get(1));
System.out.println(config.getList().get(2));
}
注意:
对于某个软件来说,通常会有三个环境的配置文件:
也就是说当软件处于不同的环境时,应搭配对应的配置文件,因此我们不能每切换一次环境都去修改配置环境,这是不现实也是非常麻烦的,合理的做法是下面这样:
spring:
profiles:
active: dev
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。