java 實(shí)現(xiàn)web項(xiàng)目啟動(dòng)加載properties屬性文件
web項(xiàng)目啟動(dòng)加載properties屬性文件
最近做項(xiàng)目,發(fā)現(xiàn)框架里面封裝的項(xiàng)目一啟動(dòng)加載所有的properties文件挺方便好用的就自己動(dòng)手寫了一個(gè).
1、首先要想在項(xiàng)目啟動(dòng)的時(shí)候就加載properties文件
就必需在web.xml中配置一個(gè)加載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)聽器之后
接下來我們就要實(shí)現(xiàn)監(jiān)聽器中的類com.lvqutour.utils.PropertyFileUtils,本人做的方法是將該類實(shí)現(xiàn)ServletContextListener接口,主要然后主要是重寫里面的init方法,現(xiàn)在項(xiàng)目啟動(dòng)的時(shí)候就會(huì)加載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、當(dāng)然為了不讓項(xiàng)目啟動(dòng)報(bào)錯(cuò)
我們必需在項(xiàng)目的resources中新建一個(gè)XXX.properties文件.
#微信支付相關(guān) #密鑰 KEY = longshengwenhuaweixiangmingWXpay #連接超時(shí)時(shí)間(毫秒) CONNECT_TIME_OUT = 10000
4、文件建好之后
我們這時(shí)要在其他類中獲取該文件的路徑,這樣大家可以回過頭來看一下在PropertyFileUtils類中有一個(gè)get()方法,這就是為給其他類獲取文件中的屬性提供的方法.其中params為.properties文件的鍵.
String key = PropertyFileUtils.get("KEY");//密鑰 int CONNECT_TIME_OUT = Integer.parseInt(PropertyFileUtils.get("CONNECT_TIME_OUT"));//連接超時(shí)時(shí)間
項(xiàng)目啟動(dòng)加載屬性文件有對(duì)我們獲取屬性文件中的屬性打非常方便不用每次都要去建流,然后去讀屬性文件.
PS:如果是在Controller里需要獲取resource.properties里的值,可直接使用@value注解:
@Value("${KEY}") private String key;//密鑰 @Value("${CONNECT_TIME_OUT}") private int CONNECT_TIME_OUT;//連接超時(shí)時(shí)間
出現(xiàn)加載java的properties配置文件空指針報(bào)錯(cuò)
剛開始把properties配置文件放在了與引用它的java文件并列的src下自定義的文件包下面, 結(jié)果一直都報(bào)空指針異常, 找不到路徑
解決
后來移動(dòng)到src根目錄下面就ok了...應(yīng)該是一種配置文件的規(guī)定吧...
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
簡單聊聊Java中驗(yàn)證碼功能的實(shí)現(xiàn)
相信大家都經(jīng)常接觸到驗(yàn)證碼的,畢竟平時(shí)上網(wǎng)也能遇到各種驗(yàn)證碼,需要我們輸入驗(yàn)證碼進(jìn)行驗(yàn)證我們是人類,本篇文章就從這幾個(gè)方面出發(fā)說說驗(yàn)證碼,廢話不多說,下面開始正文2023-06-06深入探究MyBatis插件機(jī)制靈活擴(kuò)展及自定義增強(qiáng)框架能力
這篇文章主要介紹了深入探究MyBatis插件機(jī)制靈活擴(kuò)展及自定義增強(qiáng)框架能力2024-01-01JavaWeb驗(yàn)證碼校驗(yàn)功能代碼實(shí)例
這篇文章主要介紹了JavaWeb驗(yàn)證碼校驗(yàn)功能代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Spring 實(shí)現(xiàn)自定義監(jiān)聽器案例
這篇文章主要介紹了Spring 實(shí)現(xiàn)自定義監(jiān)聽器案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01Spring的異常處理@ExceptionHandler注解解析
這篇文章主要介紹了Spring的異常處理@ExceptionHandler注解解析,當(dāng)一個(gè)Controller中有方法加了@ExceptionHandler之后,這個(gè)Controller其他方法中沒有捕獲的異常就會(huì)以參數(shù)的形式傳入加了@ExceptionHandler注解的那個(gè)方法中,需要的朋友可以參考下2023-12-12springboot vue項(xiàng)目后端列表接口分頁模糊查詢
這篇文章主要為大家介紹了springboot vue項(xiàng)目后端列表接口分頁模糊查詢,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05