欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解SpringBoot讀取resource目錄下properties文件的常見方式

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

個(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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

    這篇文章主要介紹了Mybatis中Mapper配置文件獲取參數(shù)的五種方式,文中通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • SpringCloud微服務(wù)續(xù)約實(shí)現(xiàn)源碼分析詳解

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

    這篇文章主要介紹了SpringCloud微服務(wù)續(xù)約實(shí)現(xiàn)源碼分析,服務(wù)續(xù)期和服務(wù)注冊非常相似,服務(wù)注冊在Eureka?Client程序啟動(dòng)之后開啟,并同時(shí)開啟服務(wù)續(xù)期的定時(shí)任務(wù)
    2022-11-11
  • 最新評論