1. 程式人生 > >spring 框架,載入靜態變數配置; 初始化靜態變數, 載入配置檔案

spring 框架,載入靜態變數配置; 初始化靜態變數, 載入配置檔案

1:普通變數的屬性變數載入 

import java.io.InputStream;
import java.util.Properties;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/** 
 * @ClassName PropertyLoader  
 * @Description 屬性配置檔案載入類 - 非單例、非執行緒安全, 在需要的地方建立一個
 * @author weiw
 * @date 2018年5月15日  
 *   
 */
public class PropertyLoader {
    private static final Logger logger = LoggerFactory.getLogger(PropertyLoader.class);

    private Properties configuration = null;
    
    public PropertyLoader(String configPath) {
        configuration = load(configPath);
    }

    private Properties load(String configPath) {
        Properties prop = null;
        if (StringUtils.isBlank(configPath)) {
            throw new IllegalArgumentException("配置檔案路徑不能為空!configPath=".concat(configPath));
        }

        try {
            InputStream is = PropertyLoader.class.getClassLoader().getResourceAsStream(configPath);
            prop = new Properties();
            prop.load(is);
            is.close();
            logger.info("Loading {} success.", configPath);
        } catch (Exception e) {
            logger.error("Loading {} failed. error:{}", configPath, e);
        }
        return prop;
    }
    
    public String getValue(String key) {
        return this.configuration.getProperty(key);
    }

    public int getIntValue(String key) {
        String valueStr = this.configuration.getProperty(key);
        try {
            return Integer.parseInt(valueStr);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        }
        return -1;
    }

    public int getIntValue(String key, int defaultValue) {
        String valueStr = this.configuration.getProperty(key);
        if (StringUtils.isEmpty(valueStr))
            return defaultValue;
        try {
            return Integer.parseInt(valueStr);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        }
        return defaultValue;
    }

    public double getDoubleValue(String key) {
        String valueStr = this.configuration.getProperty(key);
        try {
            return Double.parseDouble(valueStr);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        }
        return -1.0D;
    }

    public long getLongValue(String key) {
        String valueStr = this.configuration.getProperty(key);
        try {
            return Long.parseLong(valueStr);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        }
        return -1L;
    }

2:載入靜態變數配置,引用PropertyLoader

}

/** 
 * @ClassName LoadStaticProperties  
 * @Description 初始化配置的靜態常量 
 * @author weiw 
 * @date 2018年6月25日  
 *   
 */
public class LoadStaticProperties {
    private static final Logger logger = LoggerFactory.getLogger(LoadStaticProperties.class);
    private static final PropertyLoader CONFIGER =new PropertyLoader("/config/imgUtils.properties");
    private static final String fastDfsHost;
    private static final String accessKeyID;
    private static final String accessKeySecret;
    
    /** 初始化靜態變數 **/
    static {
        fastDfsHost = CONFIGER.getValue("imageUtil.fast.DfsHost");
        accessKeyID = CONFIGER.getValue("imageUtil.accessKeyID");
        accessKeySecret = CONFIGER.getValue("imageUtil.accessKeySecret");
        logger.info("fastDfsHost:{}", fastDfsHost);
        logger.info("accessKeyID:{}", accessKeyID);
        logger.info("accessKeySecret:{}", accessKeySecret);
    }

}

相關推薦

spring 框架載入靜態變數配置; 初始靜態變數, 載入配置檔案

1:普通變數的屬性變數載入  import java.io.InputStream; import java.util.Properties; import org.apache.commons.lang.StringUtils; import org.slf4j.Log

Spring框架, bean的生命週期中,初始和銷燬.

我們可以配置bean的初始化和銷燬前的方法, 有三種方法:1,在配置檔案中的<beans>標籤中配置default-init-method="defautInit" default-destroy-method="defaultDestroy"然後在bean中去寫

static{}(即static塊)會在類被載入的時候執行且僅會被執行一次一般用來初始靜態變數和呼叫靜態方法

這裡是一個工具類,因為連線配置資訊只需要執行一次就行所以採用static塊 static塊會最先執行 package com.my.jedis; import java.io.IOException; import java.io.InputStream; import

C/C++自動變數靜態變數初始(這是筆記不官方)

陣列(向量)類似於標量的初始化方式取決於變數的儲存方式。儲存於自動儲存空間的變數在main函式執行之前已經完成初始化,這個動作是有連結器完成的,不需要程式執行指令去對其進行初始化。而這個初始化的內容不管是陣列還是普通變數初始化值均為0,在程式執行的之前這些內容和程式翻譯出的

Java類載入過程後成員變數初始

Java類的載入和成員變數初始化,建立物件的順序。 class X { Y b=new Y(); X() { System.out.println("X"); } } class Y { Y() { System.out.println("Y");

靜態變數初始靜態變數在類內定義在類外進行初始

靜態變數的初始化,只能在類外進行,靜態變數在類外初始化要加上::,同時不能加上static 關鍵了。 為什麼不在類內進行初始化,因為靜態變數是公共的,不依賴與每個物件,所以它是獨立的,所以靜態變數

Spring中ApplicationContext載入機制和配置初始

Spring中ApplicationContext載入機制。         載入器目前有兩種選擇:ContextLoaderListener和ContextLoaderServlet。         這兩者在功能上完全等同,只是一個是基於Servlet2.3版本中新引入

CXF整合spring框架實現動態呼叫找不到函式介面 新增攔截器無法初始

介面實現 新增targetNamespace客戶端就不會找不到函式 @WebService(endpointInterface="cn.com.wsws.server.SealService",se

spring原始碼學習之路---IOC容器初始要義之bean定義載入(四)

上章說到要帶各位去看看bean定義載入的要義,其實就是loadBeanDefinitions這個方法的具體實現步驟,下面我們跟隨這個方法去看下它到底是如何載入bean定義的。 上面是我擷取的實現了loadBeanDefinitions的類級別截圖,loadBeanDefinit

Java基礎複習第五天陣列定義(靜態、動態初始陣列儲存機制及陣列的反轉、排序、遍歷

一 陣列定義和訪問 1.案例引入: 如果需要定義多個變數,那麼我們建議使用容器,一次性儲存多個數據,統一操作。 2.容器: 是將多個數據儲存到一起,每個資料稱為該容器的元素。 3.Java中容器: 陣列,集合 陣列:是一個長度固定的容器,而且容器中的元素

asp.net通用開發框架learun v7.0權限管理及工作流配置

app 公司業務量比較大,接了很多項目,為了縮短開發周期老板讓我牽頭搭建了一個敏捷開發框架。 我們主要的業務是做OA、CRM、ERP一類的管理系統,一個通用的後臺搭出來,再配合一些快速開發的組件開發效率能提高很多。 另外老板一再強調要支持APP開發,一次開發能部署到

java spring框架控制層接收日期型別資料出現403接收不到等問題

總結的兩個日期接收器 一 :前端傳字串型別日期 條件:只會接收到 指定型別 日期yyyy-MM-dd可以按自己想的 寫 @InitBinder protected void initBinder(WebDataBinder binder) { binder.registerCustom

javaEE shiro框架許可權控制。通過註解的方式為方法配置訪問許可權

applicationContext.xml(Spring的核心配置檔案,開啟shiro框架的註解支援): <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.spring

全域性變數、類靜態變數及函式區域性靜態變數初始順序

What is the lifetime of class static variables in C++? First the list of possibilities. Namespace Static Class Static Local Static

淺談Spring框架自動注入物件IoC/DI的過程(二)

在上一篇部落格中,我已經寫到怎麼用自動注入的物件了。可能我說的不是太清楚,有些朋友還不是很明白,那麼這次我們結合service層呼叫DAO層的方法,再詳細說說怎麼隨心所欲的使用物件。 先看一下程式碼:

C# 靜態內部類單例模式-靜態變數何時初始

對於一個類的靜態變數何時初始化,大家都有一個普遍的共識,那就是第一次使用該類時,初始化該類的所有靜態變數和靜態方法。 /// <summary> /// 只有在第一次使用到Test1的時候,才會初始化Test1.x //

C++類的靜態變數初始

#include <iostream> using namespace std; /************************************************************************/ /* 單例模式:保證一個類僅有一個例項

提高C#程式設計水平的50個要點 之十三“使用靜態建構函式來初始靜態成員變數

  編寫程式的時候難免要使用到靜態成員,由於靜態成員的訪問是脫離型別物件的,所以使用非靜態建構函式,私有方法或者一些其他方法進行靜態變數的初始化都是不合理的。   .net提供了成員初始化語句和靜態建

C#中靜態變數初始

    類的靜態欄位變數初始值設定項對應於一個賦值序列,這些賦值按照它們在相關的類宣告中出現的文字順序執行。如果類中存在靜態建構函式則靜態欄位初始值設定項的執行在該靜態建構函式即將執行前發生。否則,靜態欄位初始值設定項在第一次使用該類的靜態欄位之前先被執行,但實際執行時間依賴

java 用自身類的物件初始靜態變數 執行順序

    在上一篇文章中, 探索了在一條繼承鏈中靜態初始化塊和靜態變數初始化、初始化塊和例項域初始化、建構函式的執行順序(見http://blog.csdn.net/maple1997/article/details/79508981),現在繼續探索一下如果new一個自身類的物