java 實現(xiàn)web項目啟動加載properties屬性文件
web項目啟動加載properties屬性文件
最近做項目,發(fā)現(xiàn)框架里面封裝的項目一啟動加載所有的properties文件挺方便好用的就自己動手寫了一個.
1、首先要想在項目啟動的時候就加載properties文件
就必需在web.xml中配置一個加載properties文件的監(jiān)聽器(listener);
<!-- Properties文件的監(jiān)聽器 -->
<listener>
<description>ServletContextListener</description>
<listener-class>com.lvqutour.utils.PropertyFileUtils</listener-class>
</listener>
2、在web.xml文件中配置好了監(jiān)聽器之后
接下來我們就要實現(xiàn)監(jiān)聽器中的類com.lvqutour.utils.PropertyFileUtils,本人做的方法是將該類實現(xiàn)ServletContextListener接口,主要然后主要是重寫里面的init方法,現(xiàn)在項目啟動的時候就會加載application.local.properties文件了.
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* Created with IntelliJ IDEA.
* Date: 2018/3/13 13:06
* User: pc
* Description:自定義properties文件讀取工具類
*/
public class PropertyFileUtils implements ServletContextListener {
private static Properties prop = new Properties();
@Override
public void contextInitialized(ServletContextEvent sce) {
InputStream inputStream;
try {
inputStream = getClass().getResourceAsStream("/XXX.properties");
if(inputStream != null){
prop.load(inputStream);
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
public static String get(String params){
return prop.getProperty(params);
}
}
3、當然為了不讓項目啟動報錯
我們必需在項目的resources中新建一個XXX.properties文件.
#微信支付相關(guān) #密鑰 KEY = longshengwenhuaweixiangmingWXpay #連接超時時間(毫秒) CONNECT_TIME_OUT = 10000
4、文件建好之后
我們這時要在其他類中獲取該文件的路徑,這樣大家可以回過頭來看一下在PropertyFileUtils類中有一個get()方法,這就是為給其他類獲取文件中的屬性提供的方法.其中params為.properties文件的鍵.
String key = PropertyFileUtils.get("KEY");//密鑰
int CONNECT_TIME_OUT = Integer.parseInt(PropertyFileUtils.get("CONNECT_TIME_OUT"));//連接超時時間
項目啟動加載屬性文件有對我們獲取屬性文件中的屬性打非常方便不用每次都要去建流,然后去讀屬性文件.
PS:如果是在Controller里需要獲取resource.properties里的值,可直接使用@value注解:
@Value("${KEY}")
private String key;//密鑰
@Value("${CONNECT_TIME_OUT}")
private int CONNECT_TIME_OUT;//連接超時時間
出現(xiàn)加載java的properties配置文件空指針報錯
剛開始把properties配置文件放在了與引用它的java文件并列的src下自定義的文件包下面, 結(jié)果一直都報空指針異常, 找不到路徑
解決
后來移動到src根目錄下面就ok了...應(yīng)該是一種配置文件的規(guī)定吧...
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java常用工具類 XML工具類、數(shù)據(jù)驗證工具類
這篇文章主要為大家詳細介紹了java常用工具類,包括XML工具類、數(shù)據(jù)驗證工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-05-05
Java開發(fā)學(xué)習(xí) Eclipse項目有紅感嘆號解決之道
這篇文章主要為大家詳細介紹了完美解決Eclipse項目有紅感嘆號問題的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04
java中@JSONField和@JsonProperty注解的使用說明及對比
@JSONField與@JsonProperty隸屬兩個不同的包,前者是阿里系的fastjson包,后者是spring?boot官方使用的jackson包,本文主要介紹了java中@JSONField和@JsonProperty注解的使用說明及對比,感興趣的可以了解一下2023-11-11
Java中的HashMap弱引用之WeakHashMap詳解
這篇文章主要介紹了Java中的HashMap弱引用之WeakHashMap詳解,當內(nèi)存空間不足,Java虛擬機寧愿拋出OutOfMemoryError錯誤,使程序異常終止,也不會靠隨意回收具有強引用的對象來解決內(nèi)存不足的問題,需要的朋友可以參考下2023-09-09
淺談Java如何實現(xiàn)一個基于LRU時間復(fù)雜度為O(1)的緩存
這篇文章主要介紹了淺談Java如何實現(xiàn)一個基于LRU時間復(fù)雜度為O(1)的緩存,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
java+socket實現(xiàn)簡易局域網(wǎng)聊天室
這篇文章主要為大家詳細介紹了java+socket實現(xiàn)簡易局域網(wǎng)聊天室,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05

