1. 程式人生 > >java web專案啟動載入properties屬性檔案

java web專案啟動載入properties屬性檔案

最近做專案,發現框架裡面封裝的專案一啟動載入所有的properties檔案挺方便好用的就自己動手寫了一個.

1.首先要想在專案啟動的的時候就載入properties檔案,就必需在web.xml中配置一個載入properties檔案的監聽器(listener);
<!-- Properties檔案的監聽器 -->
    <listener>
        <description>ServletContextListener</description>
        <listener-class>com.lvqutour.utils.PropertyFileUtils</listener-class>
    </listener>

2.在web.xml檔案中配置好了監聽器之後,接下來我們就要實現監聽器中的類com.lvqutour.utils.PropertyFileUtils,本人做的方法是將該類實現ServletContextListener介面,主要然後主要是重寫裡面的init方法,現在專案啟動的時候就會載入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檔案.

#微信支付相關

#金鑰
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;//連線超時時間