1. 程式人生 > 程式設計 >SpringBoot讀取properties或者application.yml配置檔案中的資料

SpringBoot讀取properties或者application.yml配置檔案中的資料

讀取application檔案

在application.yml或者properties檔案中新增:

user.address=china
user.company=demo
user.name=讓我康康

1、使用@Value註解讀取

直接程式碼如下:

package im.homeapi.controller;
 
import org.springframework.beans.factory.annotation.Value;
import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RestController
@RequestMapping(value="/api")
public class HomeController {
 
  @Value("${user.address}")
  private String address;
 
  @Value("${user.company}")
  private String company;
 
  @Value("${user.name}")
  private String name;
 
  //value 指定訪問地址,method 指定請求型別
  @RequestMapping(value = "/home",method = RequestMethod.GET)
  public String Home()
  {
    return "Hello Word";
  }
  @RequestMapping(value = "/getConfig")
  public String getConfig() {
    return "獲取的配置資訊 :" +
        " name=" + name +
        " address=" + address +
        ",company=" + company;
  } 
}

放到單獨的配置類中讀取:

package im.homeapi.entity; 
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class UserConfig {
 
  @Value("${user.address}")
  private String address;
 
  @Value("${user.company}")
  private String company;
 
  public String getAddress() {
    return address;
  }
 
  public void setAddress(String address) {
    this.address = address;
  }
 
  public String getCompany() {
    return company;
  }
 
  public void setCompany(String company) {
    this.company = company;
  }
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  @Value("${user.name}")
  private String name;
}

呼叫如下:

 @Autowired
  private UserConfig userConfig;
  //讀取配置類
  @RequestMapping(value = "/getConfigEntity")
  public String getConfigEntity() {
    return "獲取的配置資訊 :" +
        " name=" + userConfig.getName() +
        " address=" + userConfig.getAddress() +
        ",company=" + userConfig.getCompany();
 
  }

執行結果如下:

SpringBoot讀取properties或者application.yml配置檔案中的資料

2、使用@ConfigurationProperties註解讀取方式

程式碼如下:

package im.homeapi.entity;
 
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
 
@Component
@ConfigurationProperties(prefix = "user")
public class UserConfig1 {
  private String address;
  private String company;
  private String name;
 
  public String getAddress() {
    return address;
  }
 
  public void setAddress(String address) {
    this.address = address;
  }
 
  public String getCompany() {
    return company;
  }
 
  public void setCompany(String company) {
    this.company = company;
  }
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
}

呼叫:

package im.homeapi.controller;
 
import im.homeapi.entity.UserConfig;
import im.homeapi.entity.UserConfig1;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RestController
@RequestMapping(value="/api")
public class ConfigController {
  @Autowired
  private UserConfig1 userConfig;
  //讀取配置類 ConfigurationProperties註解讀取方式
  @RequestMapping(value = "/getConfigEntity1")
  public String getConfigEntity() {
    return "獲取的配置資訊 :" +
        " name=" + userConfig.getName() +
        " address=" + userConfig.getAddress() +
        ",company=" + userConfig.getCompany();
 
  }
}

執行結果:

SpringBoot讀取properties或者application.yml配置檔案中的資料

3、讀取指定檔案

3.1、@PropertySource+@Value註解讀取方式

在resources下新建配置config/db-config.properties

注意:@PropertySource不支援yml檔案讀取。

db.username=root
db.password=123456

如圖:

SpringBoot讀取properties或者application.yml配置檔案中的資料

程式碼:

package im.homeapi.entity;
 
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
 
@Component
@PropertySource(value = { "config/db-config.properties" })
public class DBConfig {
 
  @Value("${db.username}")
  private String username;
 
  @Value("${db.password}")
  private String password;
 
  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;
  }
}

呼叫程式碼:

package im.homeapi.controller;
import im.homeapi.entity.DBConfig;
import im.homeapi.entity.UserConfig;
import im.homeapi.entity.UserConfig1;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RestController
@RequestMapping(value="/api")
public class DbController {
  @Autowired
  private DBConfig dbConfig;
  //讀取配置類 PropertySource+@Value註解讀取方式
  @RequestMapping(value = "/getConfigdb")
  public String getConfigdb() {
    return "獲取的配置資訊 :" +
        " name=" + dbConfig.getUsername() +
        ",password=" + dbConfig.getPassword();
  }
}

執行結果:

SpringBoot讀取properties或者application.yml配置檔案中的資料

3.2、@PropertySource+@ConfigurationProperties註解讀取方式

程式碼:

package im.homeapi.entity;
 
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
 
@Component
@ConfigurationProperties(prefix = "db")
@PropertySource(value = { "config/db-config.properties" })
public class DBconfig1 {
  private String username;
  private String password;
 
  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;
  }
}

呼叫程式碼:

 @Autowired
  private DBconfig1 dbConfig1;
  //讀取配置類 @PropertySource+@ConfigurationProperties註解讀取方式
  @RequestMapping(value = "/getConfigdb1")
  public String getConfigdb1() {
    return "獲取的配置資訊 :" +
        " name=" + dbConfig1.getUsername() +
        ",password=" + dbConfig1.getPassword();
  }

執行結果:

SpringBoot讀取properties或者application.yml配置檔案中的資料

@Component 表示將該類標識為Bean

@ConfigurationProperties(prefix = "db")用於繫結屬性,其中prefix表示所繫結的屬性的字首。

@PropertySource(value = "config/db-config.properties")表示配置檔案路徑。

4、使用Environment讀取

程式碼:

 @Autowired
  private Environment environment;
  //讀取配置類 CEnvironment讀取方式
  @RequestMapping(value = "/getConfigenv")
  public String getConfigenv() {
    return "獲取的配置資訊 :" +
        " name=" + environment.getProperty("user.name") +
        " address=" + environment.getProperty("user.address") +
        ",company=" + environment.getProperty("user.company");
   }

執行結果:

SpringBoot讀取properties或者application.yml配置檔案中的資料

總結

從以上示例來看,Spring Boot可以通過@PropertySource,@Value,@Environment,@ConfigurationProperties來繫結變數。

到此這篇關於SpringBoot讀取properties或者application.yml配置檔案中的資料的文章就介紹到這了,更多相關SpringBoot讀取配置資料內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!