最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springBoot如何動(dòng)態(tài)加載資源文件

 更新時(shí)間:2021年12月15日 10:25:50   作者:wangtuoyuan  
這篇文章主要介紹了springBoot如何動(dòng)態(tài)加載資源文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springBoot動(dòng)態(tài)加載資源文件

在實(shí)際項(xiàng)目中資源信息如果能夠動(dòng)態(tài)獲取在修改線上產(chǎn)品配置時(shí)極其方便,下面來展示一個(gè)加載動(dòng)態(tài)獲取資源的案例,而不是加載寫死的properties文件信息。

首先構(gòu)造PropertySource,然后將其添加到Enviroment中。

構(gòu)造DynamicLoadPropertySource

package com.wangh.test;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.env.MapPropertySource;
/**
 * 動(dòng)態(tài)加載配置文件
 * @ClassName:DynamicLoadPropertySource
 * @author:Wh
 * @date: 2017年9月14日 下午3:22:54
 */
public class DynamicLoadPropertySource extends MapPropertySource{
    private static Logger log = LoggerFactory.getLogger(DynamicLoadPropertySource.class);
    private static Map<String, Object> map = new ConcurrentHashMap<String, Object>(64); 
    private static ScheduledExecutorService scheduled = Executors.newScheduledThreadPool(1);
    static {  
        scheduled.scheduleAtFixedRate(new Runnable() {  
            @Override  
            public void run() {  
                map = dynamicLoadMapInfo();  
            }  
        }, 1, 10, TimeUnit.SECONDS);  
    }  
    /**
     * @param name
     * @param source
     */
    public DynamicLoadPropertySource(String name, Map<String, Object> source) {
        super(name, map);
    }
    @Override  
    public Object getProperty(String name) {  
        return map.get(name);  
    }  
    /**
     * //動(dòng)態(tài)獲取資源信息  
     * @return  
     */
    protected static Map<String, Object> dynamicLoadMapInfo() {
        return mockMapInfo(); 
    }
    /**
     * @return  
     */
    private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
    private static Map<String, Object> mockMapInfo() {
        Map<String, Object> map = new HashMap<String, Object>(); 
        map = getProperties();
        log.info("data{};currentTime:{}", map.get("spring.datasource.url"), sdf.format(new Date())); 
        return map;
    }
    /**
     * 獲取配置文件信息
     * @return
     */
    public static Map<String, Object> getProperties() {
        Properties props = new Properties();
        Map<String, Object> map = new HashMap<String, Object>();
        try {
            InputStream in = ClassLoader.getSystemResourceAsStream("pro.properties");
            props.load(in);
            Enumeration<?> en = props.propertyNames();
            while (en.hasMoreElements()) {
                String key = (String) en.nextElement();
                String property = props.getProperty(key);
                map.put(key, property);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return map;
    }
}

添加到Enviroment

package com.wangh.test;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.AbstractEnvironment;
/**
 * 加載動(dòng)態(tài)配置信息  
 * @ClassName:DynamicConfig
 * @author:Wh
 * @date: 2017年9月14日 下午3:38:17
 */
@Configuration
public class DynamicConfig {
    //資源信息元數(shù)據(jù):PropertySource包含name和泛型,一份資源信息存在唯一的name以及對(duì)應(yīng)泛型數(shù)據(jù),在這里設(shè)計(jì)為泛型表明可拓展自定.PropertySource在集合中的唯一性只能去看name
    public static final String DYNAMIC_CONFIG_NAME = "dynamic_config"; 
    @Autowired  
    AbstractEnvironment environment;
    @PostConstruct  
    public void init() {  
        environment.getPropertySources().addFirst(new DynamicLoadPropertySource(DYNAMIC_CONFIG_NAME, null));  
    }  
}

springBoot靜態(tài)資源動(dòng)態(tài)加載

  • spring.resources.static-locations 表示讀取靜態(tài)資源的位置
  • spring.mvc.static-path-pattern 表示讀取靜態(tài)資源路徑

舉例說明

spring.resources.static-locations=file:${user.home}/report
spring.mvc.static-path-pattern=/resources/**
  • spring.http.encoding.force=true 添加該配置解決中文亂碼問題
  • http://localhost:8080/resources/1.html

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Java快速上手用戶后臺(tái)管理系統(tǒng)

    詳解Java快速上手用戶后臺(tái)管理系統(tǒng)

    只有在實(shí)戰(zhàn)中練習(xí)才能真正獲得能力的提升,本篇文章手把手帶你用Java快速上手實(shí)現(xiàn)一個(gè)用戶后臺(tái)管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2022-01-01
  • JAVA多線程之JDK中的各種鎖詳解(看這一篇就夠了)

    JAVA多線程之JDK中的各種鎖詳解(看這一篇就夠了)

    多線程編程可以說是在大部分平臺(tái)和應(yīng)用上都需要實(shí)現(xiàn)的一個(gè)基本需求,下面這篇文章主要給大家介紹了關(guān)于JAVA多線程之JDK中各種鎖的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • Spring?Gateway基礎(chǔ)教程

    Spring?Gateway基礎(chǔ)教程

    本文主要總結(jié)Spring?Gateway的基礎(chǔ)用法,內(nèi)容包括網(wǎng)關(guān)、Spring?Gateway工作流程、Spring?Cloud?Gateway搭建、路由配置方式、負(fù)載均衡實(shí)現(xiàn)、斷言工廠這幾個(gè)部分,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • Java遞歸算法詳解(動(dòng)力節(jié)點(diǎn)整理)

    Java遞歸算法詳解(動(dòng)力節(jié)點(diǎn)整理)

    Java遞歸算法是基于Java語言實(shí)現(xiàn)的遞歸算法。遞歸算法對(duì)解決一大類問題很有效,它可以使算法簡潔和易于理解。接下來通過本文給大家介紹Java遞歸算法相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧
    2017-03-03
  • Java實(shí)現(xiàn)中序表達(dá)式的實(shí)例代碼

    Java實(shí)現(xiàn)中序表達(dá)式的實(shí)例代碼

    這篇文章主要介紹了Java實(shí)現(xiàn)中序表達(dá)式的實(shí)例代碼,需要的朋友可以參考下
    2018-08-08
  • Java中的LinkedHashMap詳解

    Java中的LinkedHashMap詳解

    這篇文章主要介紹了Java中的LinkedHashMap詳解,LinkedHashMap繼承自HashMap,它的多種操作都是建立在HashMap操作的基礎(chǔ)上的,同HashMap不同的是,LinkedHashMap維護(hù)了一個(gè)Entry的雙向鏈表,保證了插入的Entry中的順序,需要的朋友可以參考下
    2023-09-09
  • 詳解Spring中的Environment外部化配置管理

    詳解Spring中的Environment外部化配置管理

    本文主要介紹了Spring中的Environment外部化配置管理,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java的基礎(chǔ)語法學(xué)習(xí)筆記

    Java的基礎(chǔ)語法學(xué)習(xí)筆記

    這里為大家整理了Java的基礎(chǔ)語法學(xué)習(xí)筆記,包括關(guān)鍵詞、運(yùn)算符與基本的流程控制語句寫法等,需要的朋友可以參考下
    2016-05-05
  • 詳解Spring Boot 使用slf4j+logback記錄日志配置

    詳解Spring Boot 使用slf4j+logback記錄日志配置

    本篇文章主要介紹了Spring Boot 使用slf4j+logback記錄日志配置,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • Mybatis調(diào)用SQL?Server存儲(chǔ)過程的實(shí)現(xiàn)示例

    Mybatis調(diào)用SQL?Server存儲(chǔ)過程的實(shí)現(xiàn)示例

    在軟件開發(fā)過程中,經(jīng)常會(huì)使用到存儲(chǔ)過程,本文就來介紹一下Mybatis調(diào)用SQL?Server存儲(chǔ)過程的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01

最新評(píng)論

定陶县| 潼南县| 四平市| 沈丘县| 连州市| 北海市| 河西区| 海阳市| 平陆县| 泸定县| 明光市| 天门市| 桐柏县| 西华县| 简阳市| 本溪| 读书| 民县| 河北区| 陆川县| 湖口县| 夏津县| 正镶白旗| 婺源县| 三都| 衡山县| 乐山市| 晋州市| 阿荣旗| 新蔡县| 临朐县| 米林县| 巩留县| 高青县| 江北区| 大荔县| 瑞安市| 固阳县| 南漳县| 四子王旗| 吴川市|