詳解SpringBoot讀取resource目錄下properties文件的常見方式
個(gè)人理解
在企業(yè)開發(fā)中,我們經(jīng)常需要自定義一些全局變量/不可修改變量或者參數(shù)來解決大量的變量重復(fù)問題,當(dāng)需要這個(gè)全局變量時(shí),只需要從配置文件中讀取即可,根據(jù)開發(fā)中常見的情況,可以分為以下兩種情況,分別是:
- 配置文件為SpringBoot默認(rèn)的application.properties文件中的自定義參數(shù)
- 加載自定義properties文件中的自定義參數(shù),比如xxx.properties的自定義參數(shù)
加載SpringBoot默認(rèn)的application.properties
準(zhǔn)備工作
server.port=8081 # 自定義參數(shù)->都是person.變量名的形式 person.id=1 person.name=szh # list/set/數(shù)組->兩種寫法 person.hobby=play,read,write person.family[0]=father person.family[1]=mother # map->兩種寫法 person.map.key1=value1 person.map[key2]=value2 # Entity對象->Pet實(shí)體類 person.pet.type=dog person.pet.name=旺財(cái)
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; @NoArgsConstructor @AllArgsConstructor @Data public class Pet implements Serializable { private String type; private String name; }
方式一 : @ConfigurationProperties
開發(fā)中如果獲取整個(gè)以xxx開頭的所有參數(shù),那么推薦使用第一種方式,如果獲取單個(gè)參數(shù),那么建議使用第二種獲取參數(shù)方式。
import com.szh.test.entity.Pet; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; @Component @ConfigurationProperties(prefix = "person") @Data public class PersonConfig { private int id; private String name; private List hobby; private String[] family; private Map map; private Pet pet; }
測試使用代碼:
@Autowired private PersonConfig personConfig; @RequestMapping("/hello1") public void hello1() { System.out.println(personConfig.getFamily()); System.out.println(personConfig.getHobby()); System.out.println(personConfig.getMap()); System.out.println(personConfig.getId()); System.out.println(personConfig.getName()); System.out.println(personConfig.getPet().getName()); }
方式二:@Value
@Value("${person.id}") private int id; @Value("${person.name}") private String name; @Value("${person.hobby}") private List hobby; @Value("${person.family}") private String[] family; @Value("${person.map}") private Map map; @Value("${person.pet}") private Pet pet;
方式三:使用Environment獲取
@Autowired private Environment env; @RequestMapping("/hello1") public void hello1() throws UnsupportedEncodingException { String id = env.getProperty("person.id"); // 中文 String name = new String(env.getProperty("person.name").getBytes("ISO-8859-1"), "UTF-8"); List hobby = new ArrayList(); hobby.add(env.getProperty("person.hobby[0]")); hobby.add(env.getProperty("person.hobby[1]")); String[] family; Map<String,String> map = new HashMap<String,String>(); map.put("key1", env.getProperty("person.map.key1")); map.put("key2", env.getProperty("person.map.key2")); Pet pet = new Pet(env.getProperty("person.pet.type"),env.getProperty("person.pet.name")); }
加載自定義properties文件
準(zhǔn)備工作:在resource/目錄下新建一個(gè)自定義配置文件szh.properties
person.id=1 person.name=szh # list/set/數(shù)組->兩種寫法 person.hobby=play,read,write person.family[0]=father person.family[1]=mother # map->兩種寫法 person.map.key1=value1 person.map[key2]=value2 # Entity對象 person.pet.type=dog person.pet.name=旺財(cái)
方式一: @PropertySource+@ConfigurationProperties
@Component @PropertySource(value = "classpath:szh.properties") @ConfigurationProperties(prefix = "person") @Data public class PersonConfig { private int id; private String name; private List hobby; private String[] family; private Map map; private Pet pet; }
方式二:@PropertySource+@Value
@Component @PropertySource(value = "classpath:szh.properties") @Data public class PersonConfig { @Value("${person.id}") private int id; @Value("${person.name}") private String name; @Value("${person.hobby}") private List hobby; @Value("${person.family}") private String[] family; @Value("${person.map}") private Map map; @Value("${person.pet}") private Pet pet; }
方式三:Properties加載
//讀取資源配置文件 InputStream is = Bean.class.getClassLoader().getResourceAsStream("szh.properties"); prop = new Properties(); String className = "person.name";//可以作為一個(gè)函數(shù)的變量 try { prop.load(is); String pathName = prop.getProperty(className); } catch (Exception e) { throw new RuntimeException("xxxx"); }
到此這篇關(guān)于SpringBoot讀取resource目錄下properties文件的常見方式的文章就介紹到這了,更多相關(guān)SpringBoot讀取properties文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Spring?Boot獲取resources目錄下的文件三種方式詳解
- springboot項(xiàng)目讀取resources目錄下的文件的9種方式
- Springboot 項(xiàng)目讀取Resources目錄下的文件(推薦)
- Spring Boot讀取resources目錄文件方法詳解
- SpringBoot中讀取jar包中的resources目錄下的文件的三種方式
- SpringBoot讀取Resource目錄下文件的四種方式總結(jié)
- SpringBoot實(shí)現(xiàn)本地上傳文件到resources目錄
- SpringBoot讀取resource目錄下文件失敗的原因及解決方案
- SpringBoot如何讀取resources目錄下的文件
- Spring?Boot項(xiàng)目獲取resources目錄下文件并返回給前端的方案
相關(guān)文章
Spring Boot啟動(dòng)及退出加載項(xiàng)的方法
這篇文章主要介紹了Spring Boot啟動(dòng)及退出加載項(xiàng)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04MybatisPlus字段自動(dòng)填充失效,填充值為null的解決方案
這篇文章主要介紹了MybatisPlus字段自動(dòng)填充失效,填充值為null的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01Spring加載properties文件的兩種方式實(shí)例詳解
這篇文章主要介紹了Spring加載properties文件的兩種方式,需要的朋友可以參考下2018-02-02解決SpringBoot項(xiàng)目在啟動(dòng)后自動(dòng)關(guān)閉的問題
今天搭建了一個(gè)SpringBoot項(xiàng)目,但是在啟動(dòng)之后就自行關(guān)閉了,下面通過本文給大家介紹SpringBoot項(xiàng)目在啟動(dòng)后自動(dòng)關(guān)閉問題及解決方法,需要的朋友可以參考下2023-08-08java開發(fā)中使用IDEA活動(dòng)模板快速增加注釋的方法
這篇文章主要介紹了java開發(fā)中使用IDEA活動(dòng)模板快速增加注釋,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12

一文搞懂Mybatis中Mapper配置文件獲取參數(shù)的五種方式

SpringCloud微服務(wù)續(xù)約實(shí)現(xiàn)源碼分析詳解