最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解SpringBoot讀取resource目錄下properties文件的常見(jiàn)方式

 更新時(shí)間:2021年02月07日 10:56:11   作者:SZH勿忘初心  
這篇文章主要介紹了SpringBoot讀取resource目錄下properties文件的常見(jiàn)方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

個(gè)人理解

在企業(yè)開(kāi)發(fā)中,我們經(jīng)常需要自定義一些全局變量/不可修改變量或者參數(shù)來(lái)解決大量的變量重復(fù)問(wèn)題,當(dāng)需要這個(gè)全局變量時(shí),只需要從配置文件中讀取即可,根據(jù)開(kāi)發(fā)中常見(jiàn)的情況,可以分為以下兩種情況,分別是:

  • 配置文件為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對(duì)象->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

開(kāi)發(fā)中如果獲取整個(gè)以xxx開(kāi)頭的所有參數(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;

}

測(cè)試使用代碼:

@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對(duì)象
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文件的常見(jiàn)方式的文章就介紹到這了,更多相關(guān)SpringBoot讀取properties文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 向Spring IOC 容器動(dòng)態(tài)注冊(cè)bean實(shí)現(xiàn)方式

    向Spring IOC 容器動(dòng)態(tài)注冊(cè)bean實(shí)現(xiàn)方式

    這篇文章主要為大家介紹了向Spring IOC 容器動(dòng)態(tài)注冊(cè)bean實(shí)現(xiàn)方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Springboot單元測(cè)試無(wú)法讀取配置文件的解決方案

    Springboot單元測(cè)試無(wú)法讀取配置文件的解決方案

    這篇文章主要介紹了Springboot單元測(cè)試無(wú)法讀取配置文件的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring Cloud動(dòng)態(tài)配置刷新@RefreshScope與@Component的深度解析

    Spring Cloud動(dòng)態(tài)配置刷新@RefreshScope與@Component的深度解析

    在現(xiàn)代微服務(wù)架構(gòu)中,動(dòng)態(tài)配置管理是一個(gè)關(guān)鍵需求,Spring Cloud 提供了 @RefreshScope 注解,允許應(yīng)用在運(yùn)行時(shí)動(dòng)態(tài)更新配置,而無(wú)需重啟服務(wù),本文深入探析Spring Cloud動(dòng)態(tài)配置刷新@RefreshScope與@Component,感興趣的朋友一起看看吧
    2025-04-04
  • 在Spring Boot中集成RabbitMQ詳細(xì)步驟(最新推薦)

    在Spring Boot中集成RabbitMQ詳細(xì)步驟(最新推薦)

    本文將介紹如何在Spring Boot項(xiàng)目中集成RabbitMQ,實(shí)現(xiàn)生產(chǎn)者和消費(fèi)者的基本配置,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-12-12
  • Java 自定義錯(cuò)誤類示例代碼

    Java 自定義錯(cuò)誤類示例代碼

    以下是對(duì)Java中自定義錯(cuò)誤類的示例代碼進(jìn)行了介紹。需要的朋友可以過(guò)來(lái)參考下
    2013-08-08
  • SpringBoot AOP注解失效問(wèn)題排查與解決(調(diào)用內(nèi)部方法)

    SpringBoot AOP注解失效問(wèn)題排查與解決(調(diào)用內(nèi)部方法)

    這篇文章主要介紹了SpringBoot AOP注解失效問(wèn)題排查與解決(調(diào)用內(nèi)部方法),文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • Netty進(jìn)階之ChannelPoolMap源碼解析

    Netty進(jìn)階之ChannelPoolMap源碼解析

    這篇文章主要介紹了Netty進(jìn)階之ChannelPoolMap源碼解析,ChannelPoolMap是用來(lái)存儲(chǔ)ChannelPool和指定key的一個(gè)集合Map,實(shí)際的應(yīng)用場(chǎng)景就是服務(wù)器端是一個(gè)分布式集群服務(wù),擁有多個(gè)配置地址,這樣我們就可以配置多個(gè)服務(wù)地址,減輕單臺(tái)服務(wù)器的壓力,需要的朋友可以參考下
    2023-11-11
  • 使用EasyPoi實(shí)現(xiàn)多Sheet頁(yè)導(dǎo)出的示例代碼

    使用EasyPoi實(shí)現(xiàn)多Sheet頁(yè)導(dǎo)出的示例代碼

    在項(xiàng)目開(kāi)發(fā)中,我們常常會(huì)遇到導(dǎo)出多Sheet頁(yè)的需求,本文降維打擊介紹一下如何使用EasyPoi實(shí)現(xiàn)這一功能,文中的示例代碼簡(jiǎn)潔易懂,有需要的可以參考下
    2025-03-03
  • Spring?Boot項(xiàng)目集成Knife4j接口文檔的實(shí)例代碼

    Spring?Boot項(xiàng)目集成Knife4j接口文檔的實(shí)例代碼

    Knife4j就相當(dāng)于是swagger的升級(jí)版,對(duì)于我來(lái)說(shuō),它比swagger要好用得多<BR>,這篇文章主要介紹了Spring?Boot項(xiàng)目集成Knife4j接口文檔的示例代碼,需要的朋友可以參考下
    2021-12-12
  • java性能分析jconsole詳解

    java性能分析jconsole詳解

    這篇文章主要介紹了java性能分析jconsole詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07

最新評(píng)論

民县| 白朗县| 内丘县| 竹北市| 文成县| 鄯善县| 伊宁市| 长宁县| 大荔县| 洞头县| 南乐县| 正阳县| 潜山县| 都江堰市| 淮北市| 金昌市| 哈尔滨市| 永靖县| 武定县| 温泉县| 苏尼特左旗| 彰武县| 墨玉县| 额济纳旗| 诸暨市| 衡阳县| 金平| 凤阳县| 赤城县| 邯郸市| 宁城县| 河西区| 永康市| 牙克石市| 大厂| 堆龙德庆县| 沙坪坝区| 桑植县| 防城港市| 三门县| 龙游县|