iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >springBoot如何动态加载资源文件
  • 418
分享到

springBoot如何动态加载资源文件

2024-04-02 19:04:59 418人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录SpringBoot动态加载资源文件构造DynamicLoadPropertySource添加到EnviromentspringBoot静态资源动态加载举例说明springBoo

springBoot动态加载资源文件

在实际项目中资源信息如果能够动态获取在修改线上产品配置时极其方便,下面来展示一个加载动态获取资源的案例,而不是加载写死的properties文件信息。

首先构造PropertySource,然后将其添加到Enviroment中。

构造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;

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);  
    }  
    
    public DynamicLoadPropertySource(String name, Map<String, Object> source) {
        super(name, map);
    }
    @Override  
    public Object getProperty(String name) {  
        return map.get(name);  
    }  
    
    protected static Map<String, Object> dynamicLoadMapInfo() {
        return mockMapInfo(); 
    }
    
    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;
    }
    
    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;

@Configuration
public class DynamicConfig {
    //资源信息元数据:PropertySource包含name和泛型,一份资源信息存在唯一的name以及对应泛型数据,在这里设计为泛型表明可拓展自定.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静态资源动态加载

  • spring.resources.static-locations 表示读取静态资源的位置
  • spring.mvc.static-path-pattern 表示读取静态资源路径

举例说明


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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: springBoot如何动态加载资源文件

本文链接: https://www.lsjlt.com/news/159946.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • springBoot如何动态加载资源文件
    目录springBoot动态加载资源文件构造DynamicLoadPropertySource添加到EnviromentspringBoot静态资源动态加载举例说明springBoo...
    99+
    2022-11-12
  • Android插件化之资源动态加载
    Android插件化之资源动态加载 一.概述 Android插件化的一个重要问题就是插件资源访问问题,先列出会面对的问题 1.如何加载插件资源 2.如何处理插件资源与宿主...
    99+
    2022-06-06
    动态 Android
  • 使用SpringBoot如何实现加载静态资源
    这篇文章给大家介绍使用SpringBoot如何实现加载静态资源,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在SpringBoot中加载静态资源和在普通的web应用中不太一样。默认情况下,spring Boot从cla...
    99+
    2023-05-31
    springboot 静态资源
  • 聊聊springboot静态资源加载的规则
    目录静态资源映射规则1.webjars2.springboot内置默认访问路径3.首页处理4.网站图标我们经常会使用springboot创建web应用,在springboot中金静态...
    99+
    2022-11-12
  • SpringBoot项目实战之加载和读取资源文件
    目录通过Resource接口手动加载通过@Value自动转换通过ResourceLoader加载使用ResourceUtils加载资源读取资源中的内容通过File对象读取通过Inpu...
    99+
    2022-11-12
  • Android动态加载资源实例解析
      前不久跑去折腾高德 SDK 中的 HUD 功能,相信用过该功能的用户都知道 HUD 界面上的导航转向图标是动态变化的。从高德官方导航 javascript:;" onC...
    99+
    2022-06-06
    android动态加载 Android
  • springboot中的静态资源加载顺序优先级
    目录springboot静态资源加载顺序优先级看springboot源码里面springboot静态资源加载规则一、静态资源映射规则1.webjars2.springboot内置默认...
    99+
    2022-11-12
  • 如何动态加载JavaScript文件
    这篇文章主要介绍如何动态加载JavaScript文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、使用document.write/writeln()方式该种方式可以实现js文件...
    99+
    2022-10-19
  • Tomcat无法加载css和js等静态资源文件如何解决
    这篇文章主要讲解了“Tomcat无法加载css和js等静态资源文件如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Tomcat无法加载css和js等静态资源文件如何解决”吧!解决思路有...
    99+
    2023-07-04
  • Java Load API函数:如何实现动态加载和卸载资源?
    在Java应用程序中,有时需要动态地加载和卸载资源,例如插件、模块或者动态库等。这时就需要使用Java Load API函数来实现动态加载和卸载资源。本文将介绍Java Load API函数的使用方法,并提供一些演示代码。 什么是Java...
    99+
    2023-06-06
    load api 函数
  • 【python】动态加载文件
    在项目中需要完成一个功能,用户在前端编辑代码,然后在用例中通用特定的方式(@{关键字方法}@)可以调用编辑的代码块 因为后台是一个服务,服务启动的时候加载生成代码文件,用户更新时前端调用后台接口可同步更新,问题的关键在于如何调用...
    99+
    2023-01-31
    加载 文件 动态
  • Vue如何下载本地静态资源static文件夹
    目录下载本地静态资源static文件夹下载静态文件方法下载下载本地static静态文件的踩坑下载本地静态资源static文件夹 下载静态文件方法 <a href="/stat...
    99+
    2022-11-13
  • java怎么加载jar包内资源文件
    Java加载jar包内的资源文件可以通过以下两种方式实现: 使用Class.getResource()方法: URL url =...
    99+
    2023-10-30
    java jar
  • Android 加载assets中的资源文件实例代码
    Android 加载assets资源 在android中,如何加载assets目录下的文件夹呢?方法很简单,使用 AssetManager, 即 AssetManager...
    99+
    2022-06-06
    源文件 Android
  • Springboot使用@RefreshScope注解实现配置文件的动态加载
    目录pom.xmlproperties启动类配置类controller打包springcloud对应的springboot版本参考:spring-boot-starter-actua...
    99+
    2022-11-12
  • vue3如何加载本地图片等静态资源浅析
    目录背景将资源引入为 URLnew URL(url, import.meta.url)结尾背景 在我们用 vue2 + webpack 的时候,加载图片资源是这样用的: <im...
    99+
    2023-05-15
    vue 加载本地图片 vue加载本地图片 vue3加载静态资源
  • SpringBoot如何读取资源目录中的JSON文件
    这篇“SpringBoot如何读取资源目录中的JSON文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot...
    99+
    2023-07-06
  • 使用springboot对外部静态资源文件的处理操作
    目录springboot对外部静态资源文件的处理1、存方面倒还简单,这里贴上一个获取微信临时素材并保存的方法2、取,由于对springboot不熟悉,所以在这上面踩了坑主要使用到这2...
    99+
    2022-11-12
  • springboot如何静态加载@configurationProperties
    目录1、错误案例2、成功案例3、原因平时开发,基本不改变的常量我们都放在了配置项里,如properties或yml文件里,这个时候为了只在启动时候进行加载。如何做呢? 我们通过spr...
    99+
    2022-11-13
  • SpringBoot源码剖析之属性文件加载原理
    目录前言1.找到入口2.ConfigFileApplicationListener2.1 主要流程分析2.2 Loader构造器2.3 properties加载总结 前言 ...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作