(四)Spring Boot-配置多个YamI文件
YamI配置文件
配置文件除了可以使用application.properties类型,还可以使用后缀名为: yml或者yaml的类型,也就是:
applic ation.yml或者application.yaml
正如YAML所表示的YAML Aint Markup Language, YAML是一种简洁的非标记语言。YAM以改据为中心,使用空白,
缩进,分行组织数据,从而使得表示更加简洁易读。
目标:可以将多个yml文件在application.yml文件中配置激活
分析:
yaml与properties配置文件除了展示形式不相同以外,其它功能和作用都是一样的;在项目中读取方式不需要改变。
1)yml配置文件的特征:
1.树状层级结构展示配置项;
2.配置项之间如果有关系的话需要分行 空两格;
3.配置项如果有值的话,那么需要在 :之后空一格再写配置项值;
将application.properties配置文件修改为application.yml的话:
jdbc:
driverClassName: com.mysql.jdbc.Driver
Url: jdbc:mysq1://127.0.01:3306/test
username: root
password: 123456
key:
abc: cba
def:
- g
- h
2)多个yml配置文件;在spring boot中是被允许的。
这些配置文件的名称必须为pplcation-*.yml ,并且这些配置文件必须要在application.yml配置文件中激活之后才可以使用。
3)如果properties和yml配置文件同时存在在spring boot项目中;
那么这两类配置文件都有效。在两个配置文件中如果存在同名的配置项的话会以properties文件的为主。
小结:
在多个配置文件时,需要将这些文件在application.yml文件中进行激活:
spring:
profiles:
active: daily,heima
代码示例:

JdbcProperties:
public class JdbcProperties {
private String url;
private String driverClassName;
private String username;
private String password;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
JdbcConfig:
@Configuration
public class JdbcConfig {
@ConfigurationProperties(prefix = "jdbc")
@Bean
public DataSource dataSource() {
return new DruidDataSource();
}
}
application.yml

application-daily.yml

application-heima.yml

HelloController:
package test.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.sql.DataSource;
@RestController
public class HelloController {
@Autowired
private DataSource dataSource;
@Value("${itcast.url}")
private String itcastUrl;
@Value("${itheima.url}")
private String itheimaUrl;
@GetMapping("hello")
public String hello(){
System.out.println("DataSource="+dataSource);
System.out.println("itcastUrl"+itcastUrl);
System.out.println("itheimaUrl"+itheimaUrl);
return "hello,spring boot!";
}
}
运行结果断点:


浙公网安备 33010602011771号