首頁 > 軟體

springboot獲取properties屬性值的多種方式總結

2022-03-21 16:01:43

獲取properties屬性值方式總結

spring boot 在多環境情況下我們需要根據不同的獲取不一樣的值, 我們會設定在不同的檔案中,

那麼我們怎麼獲取設定的屬性值呢! 下面介紹幾種用法。

1. 除了預設設定在 application.properties的多環境中新增屬性

我們會在application.properties 中啟用不同方式選擇下面的不同檔案進行釋出。

設定的啟用引數:dev, test, prod

spring.profiles.active=prod
url.lm=editMessage
url.orgCode=100120171116031838
url.ybd=http://www.test.com/sales/
url.PostUrl=/LmCpa/apply/applyInfo  

獲取屬性可以, 定義設定類:

@ConfigurationProperties(prefix = "url")    
public class  ManyEnvProperties{  
   private String lm;  
   private String orgCode;  
   private String ybd;  
   private String postUrl;  
   // 省列getter setter 方法  
}  

2. 使用之前在spring中載入的value值形式

@Component  
public class ManyEnvProperties {  
   @Value("${url.lm}")  
   private String lmPage;  
   @Value("${url.ybd}")  
   private String sendYbdUrl;  
   @Value("${url.orgCode}")  
   private String orgCode;  
   @Value("${url.PostUrl}")  
   private String PostUrl;  
   // 省列getter setter 方法  
}  

3. 也可以使用springboot裡面的Environment 直接取值

顯示注入, 其次是在需要的地方獲取值

@Autowired  
private Environment env;  
logger.info("===============》 " + env.getProperty("url.lm")); 

4. 如果是自己新建的一個properties檔案

@Component  
@ConfigurationProperties(prefix = "url")  
@PropertySource("classpath:/platform.properties")  
public class PropertiesEnv {  
   private String lm;  
   private String orgCode;  
   private String ybd;  
   private String postUrl;
   // 省列getter setter 方法  
} 

獲取多個自定義屬性值

使用@Value 注入每個自定義設定,當自定義設定的屬性值過多時就比較麻煩了,這時通過springboot提供了基於型別安全的設定方法,通過@ConfigurationProperties將properties中的屬性和一個bean的屬性關聯,從而實現型別安全的設定,

比如在application中自定義屬性

note.author=yzh
note.name=china

可以通過

@ConfigurationProperties(prefix="note")

需要注意的是自定義屬性值的字首統一為note才可以獲取到對應的屬性值.屬性值名稱要跟組態檔裡面的名稱對應起來

同時通過這種方法需要生成屬性值的get/set 方法,否則獲取不到對應的屬性值 

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com