VM options 以及 properties文件的一些理解


背景

之前做項目配數據源信息,一般是把用戶名,密碼這些都放在一個properties文件中。最近做了個項目是把用戶名密碼配置在了web容器(tomcat)啟動選項里,然后通過${key}注入到properties文件中。

由此產生很多疑問

  1. 容器的啟動選項是怎么注入到properties文件中的。
  2. 容器的啟動選項設置的屬性的使用范圍。
  3. properties中配置的屬性是怎么注入到spring配置文件中的。
  4. properties中配置的屬性的使用范圍。

 

 

 

 

 

 

 

個人理解 (有問題請指教)

在網上找了很久,沒有找到說清楚VM options是什么的相關帖子。我就自己理解一下吧。

寫了一個demo,最后發現在VM options中配置的參數,可以通過${}占位符在項目的任何位置注入,比如spring的xml配置文件,properties文件以及通過@Value注入java文件中。

 

 

 

 可以理解為容器的啟動選項配置的屬性是整個web容器的全局變量,可以在容器中的所有項目,所有項目中的所有文件中通過${key}引用到。

 

 

關於properties文件

緊接着我順帶深入理解了一下properties文件以及properties中定義的屬性在spring中的作用域。

基礎操作

首先properties就是一個定義鍵值對的文件,我們可以通過Properties類加載然后通過getProperty("key")來獲取value,參考

 

通常做法: 

但是我們用的最多的是在spring的相關配置中使用properties來收集一些配置屬性方便修改。

在spring的xml配置文件中使用

    <context:property-placeholder location="classpath:service.properties" ignore-unresolvable="true"/>

來加載properties文件,然后在xml中用${key}來注入對應value,或者在java類屬性上用@Value(${key})來注入對應value。

 

於是我又產生了一個疑問:在xml中引入的properties文件的作用域是什么,是當前xml文件?是spring容器?還是整個項目?

寫了一個demo測了一下,發現xml中引入的properties的屬性是容器級別的。比如springmvc系統中會有springmvc子容器和spring核心父容器兩個容器,在springmvc.xml中引入的properties的屬性只能在springmvc子容器中的bean以及同級別xml配置文件中獲取到,而spring父容器中的bean則獲取不到,反之亦然。

 

總結:

 

  1. 容器的啟動選項是怎么注入到properties文件中的。解答:我們只需要配置容器啟動選項,其他完全由容器實現和處理。
  2. 容器的啟動選項設置的屬性的使用范圍。解答:容器中所有項目,項目中所有文件。
  3. properties中配置的屬性是怎么注入到spring配置文件中的。解答:我們只需要引入properties文件,其他由spring實現和處理
  4. properties中配置的屬性的使用范圍。解答:屬性引入的容器

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM