(四)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!";
    }
}

运行结果断点:

posted @ 2021-08-19 00:19  只要不兔的学习笔记  阅读(1159)  评论(0)    收藏  举报