SpringBoot讀取properties或者application.yml配置檔案中的資料
阿新 • • 發佈:2020-06-19
讀取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(); }
執行結果如下:
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(); } }
執行結果:
3、讀取指定檔案
3.1、@PropertySource+@Value註解讀取方式
在resources下新建配置config/db-config.properties
注意:@PropertySource不支援yml檔案讀取。
db.username=root db.password=123456
如圖:
程式碼:
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(); } }
執行結果:
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(); }
執行結果:
@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"); }
執行結果:
總結
從以上示例來看,Spring Boot可以通過@PropertySource,@Value,@Environment,@ConfigurationProperties來繫結變數。
到此這篇關於SpringBoot讀取properties或者application.yml配置檔案中的資料的文章就介紹到這了,更多相關SpringBoot讀取配置資料內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!