SpringBoot讀取配置文件的五種方法總結(jié)
Spring Boot 中讀取配置文件有以下 5 種方法:
- 使用 @Value 讀取配置文件。
- 使用 @ConfigurationProperties 讀取配置文件。
- 使用 Environment 讀取配置文件。
- 使用 @PropertySource 讀取配置文件。
- 使用原生方式讀取配置文件。
它們的具體使用方法如下,為了方便測試,我們在 Spring Boot 配置文件 application.properties 添加以下內(nèi)容:
profile.name=Spring Boot Profile profile.desc=Spring Boot Profile Desc.
1.使用 @Value 讀取配置文件
使用 @Value 可以讀取單個配置項,如下代碼所示:
@SpringBootApplication public class DemoApplication implements InitializingBean { @Value("${profile.name}") private String name; public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Override public void afterPropertiesSet() throws Exception { System.out.println("My Profile Name:" + name); } }
以上程序的執(zhí)行結(jié)果如下圖所示:
2.使用 @ConfigurationProperties 讀取配置文件
@ConfigurationProperties 和 @Value 的使用略微不同,@Value 是讀取單個配置項的,而 @ConfigurationProperties 是讀取一組配置項的,我們可以使用 @ConfigurationProperties 加實體類讀取一組配置項,如下代碼所示:
import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "profile") @Data public class Profile { private String name; private String desc; }
其中 prefix 表示讀取一組配置項的根 name,相當(dāng)于 Java 中的類名,最后再把此配置類,注入到某一個類中就可以使用了,如下代碼所示:
@SpringBootApplication public class DemoApplication implements InitializingBean { @Autowired private Profile profile; public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Override public void afterPropertiesSet() throws Exception { System.out.println("Profile Object:" + profile); } }
以上程序的執(zhí)行結(jié)果如下圖所示:
3.使用 Environment 讀取配置文件
Environment 是 Spring Core 中的一個用于讀取配置文件的類,將此類使用 @Autowired 注入到類中就可以使用它的 getProperty 方法來獲取某個配置項的值了,如下代碼所示:
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.core.env.Environment; @SpringBootApplication public class DemoApplication implements InitializingBean { @Autowired private Environment environment; public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Override public void afterPropertiesSet() throws Exception { System.out.println("Profile Name:" + environment.getProperty("profile.name")); } }
以上程序的執(zhí)行結(jié)果如下圖所示:
4.使用 @PropertySource 讀取配置文件
使用 @PropertySource 注解可以用來指定讀取某個配置文件,比如指定讀取 application.properties 配置文件的配置內(nèi)容,具體實現(xiàn)代碼如下:
@SpringBootApplication @PropertySource("classpath:application.properties") public class DemoApplication implements InitializingBean { @Value("${profile.name}") private String name; public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Override public void afterPropertiesSet() throws Exception { System.out.println("Name:" + name); } }
以上程序的執(zhí)行結(jié)果如下圖所示:
中文亂碼
如果配置文件中出現(xiàn)中文亂碼的情況,可通過指定編碼格式的方式來解決中文亂碼的問題,具體實現(xiàn)如下:
@PropertySource(value = "dev.properties", encoding = "utf-8")
注意事項
@PropertySource 注解默認(rèn)是只支持 properties 格式配置文件的讀取的。
5.使用原生方式讀取配置文件
我們還可以使用最原始的方式 Properties 對象來讀取配置文件,如下代碼所示:
import org.springframework.beans.factory.InitializingBean; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.Properties; @SpringBootApplication public class DemoApplication implements InitializingBean { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Override public void afterPropertiesSet() throws Exception { Properties props = new Properties(); try { InputStreamReader inputStreamReader = new InputStreamReader( this.getClass().getClassLoader().getResourceAsStream("application.properties"), StandardCharsets.UTF_8); props.load(inputStreamReader); } catch (IOException e1) { System.out.println(e1); } System.out.println("Properties Name:" + props.getProperty("profile.name")); } }
以上程序的執(zhí)行結(jié)果如下圖所示:
總結(jié)
在 Spring Boot 中讀取配置文件有以下 5 種方法:
- 使用 @Value 讀取配置文件。
- 使用 @ConfigurationProperties 讀取配置文件。
- 使用 @PropertySource 讀取配置文件。
- 使用 Environment 讀取配置文件。
- 使用原生方式讀取配置文件。
其中最常用的是前 3 種,如果讀取某一個配置項可使用 @Value,如果讀取一組配置項可使用 @ConfigurationProperties,如果要指定讀取某一個具體的配置文件可使用 @PropertySource 來指定。
到此這篇關(guān)于SpringBoot讀取配置文件的五種方法總結(jié)的文章就介紹到這了,更多相關(guān)SpringBoot讀取配置文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
RestTemplate接口調(diào)用神器常見用法匯總
這篇文章主要介紹了RestTemplate接口調(diào)用神器常見用法匯總,通過案例代碼詳細(xì)介紹RestTemplate接口調(diào)用神器常見用法,需要的朋友可以參考下2022-07-07