SpringBoot如何將applicaton.properties中的數(shù)據(jù)綁定到bean中
一、回顧@value注解
SpringBoot中我們該如何將applicaton.properties中的數(shù)據(jù)綁定到bean中呢?在之間我們是可以通過@value注解,在SpringBoot自動啟動后,會自動的去相應(yīng)的路徑中去尋找applicaton.properties配置文件,然后將相應(yīng)的值賦值上。回顧如下:
spring.application.name=properties-location myapp.name=classpath:/config
//納入IoC容器管理
@Component
public class appConfig {
@Value("${myapp.name}")
private String appPath;
public void printInfo(){
System.out.println("App Path: " + appPath);
}
}如上的方式就可以很好的將配置文件中的信息注入到bean對象中,但是一但配置文件中的要注入bean對象的信息過多的話,那我們就需要寫非常多個@value的注解,這樣就會非常的麻煩。
二、將配置綁定到簡單bean
使用注解@ConfigurationProperties(prefix="myapp")就可以把后面都依次注入,示例如下。
applicaton.properties中的配置內(nèi)容如下:
spring.application.name=demo4 myapp.configName=test myapp.configId=1234 myapp.configValue=value myapp.configKey=1234
想將applicaton.properties中的配置內(nèi)容賦值到Cogfig這個bean對象中。通過@ConfigurationProperties(prefix="myapp")來實現(xiàn),且需要注意的是,要寫上每個要被賦值屬性的setter方法,因為其在被賦值的時候是通過setter方法進行賦值的。同時需要注意屬性名要和applicaton.properties中的配置一致。
package com.example.demo4;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "myapp")
public class Config {
private String configName;
private String configId;
private String configValue;
private String configKey;
public void setConfigName(String configName) {
this.configName = configName;
}
public void setConfigId(String configId) {
this.configId = configId;
}
public void setConfigValue(String configValue) {
this.configValue = configValue;
}
public void setConfigKey(String configKey) {
this.configKey = configKey;
}
@Override
public String toString() {
return "Config{" +
"configName='" + configName + '\'' +
", configId='" + configId + '\'' +
", configValue='" + configValue + '\'' +
", configKey='" + configKey + '\'' +
'}';
}
}測試結(jié)果如下:
package com.example.demo4;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Demo4ApplicationTests {
@Autowired
Config config;
@Test
void test0() {
System.out.println(config.toString());
}
}
輸出:Config{configName='test', configId='1234', configValue='value', configKey='1234'}三、將配置綁定到嵌套bean
就是其實有時候綁定的bean并不是單一的,是復(fù)雜的。
private String configName; private String configId; private String configValue; private String configKey; private ConfigLocation configLocation;
例如在其中有些bean對象中,其屬性可能就不是單一的屬性,也可能如private ConfigLocation configLocation;一樣,本身也是一個對象,那么像這種嵌套的bean對象又如何注入呢?其實方式是一樣的, 也是通過注解@ConfigurationProperties來實現(xiàn)配置到bean的注入。
其ConfigLocation如下。
package com.example.demo4;
public class ConfigLocation {
private String configCountry;
private String configState;
public void setConfigCountry(String configCountry) {
this.configCountry = configCountry;
}
public void setConfigState(String configState) {
this.configState = configState;
}
@Override
public String toString() {
return "ConfigLocation{" +
"configCountry='" + configCountry + '\'' +
", configState='" + configState + '\'' +
'}';
}
}只需要其applicaton.properties的格式改一下就可以實現(xiàn)。
spring.application.name=demo4 myapp.configName=test myapp.configId=1234 myapp.configValue=value myapp.configKey=1234 myapp.configLocation.configCountry=china myapp.configLocation.configState=LiaoNing
測試結(jié)果如下:

也是綁定成功了。
四、@EnableConfigurationProperties
@EnableConfigurationProperties的使用方法是在其主入口類上添加該注解,并將啟動的配置信息綁定到Config的bean對象上去。
package com.example.demo4;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@SpringBootApplication
@EnableConfigurationProperties(Config.class)
public class Demo4Application {
public static void main(String[] args) {
SpringApplication.run(Demo4Application.class, args);
}
}同時Config這個bean對象上不用在使用@Component注解了。

測試:

通過測試,并輸出結(jié)果正確。
到此這篇關(guān)于SpringBoot中配置綁定到bean中的文章就介紹到這了,更多相關(guān)SpringBoot配置綁定bean內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決jackson反序列化失敗InvalidFormatException:Can not dese
這篇文章主要介紹了解決jackson反序列化失敗InvalidFormatException:Can not deserialize value of type java.util.Date問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
Springboot 使用內(nèi)置tomcat禁止不安全HTTP的方法
這篇文章主要介紹了Springboot 使用內(nèi)置tomcat禁止不安全HTTP的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
kill命令在Java應(yīng)用中使用的注意事項小結(jié)
這篇文章主要給大家介紹了關(guān)于kill命令在Java應(yīng)用中使用的注意事項,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06

