JFig读取配置文件,实现动态加载

JFig简单应用实例工程 NULL 博文链接:https://liujixiang8605554.iteye.com/blog/1420209 立即下载

size=small]      通过JFig.jar可以实现读取配置文件,把数据保存到集合中,然后通过代理就可以实现动态加载了.
Collection类

Java代码
  1. /**  
  2.  * @author 42087743  
  3.  * 功能:读取配置文件,将数据存储到hashmap中  
  4.  * 说明:为节约版面,省去了set和get方法  
  5.  */   
  6. public   class  CollectionConfig {  
  7.     //设置xml文件中的name   
  8.     private   final   static  String Config_Section =  "collection" ;  
  9.     //声明存储数据的hashmap   
  10.     private   static  Map<String,String> hashMap =  null ;  
  11.     //主要方法,通过JFig读取配置文件   
  12.     public   static  Map load(String config_File){  
  13.         JFigLocator jFigLocator = new  JFigLocator(config_File);  
  14.         JFigIF jFigIF = JFig.getInstance(jFigLocator);  
  15.         hashMap = new  HashMap<String,String>();  
  16.           
  17.         //存储数据到properties中   
  18.         Properties props = jFigIF.getSectionAsProperties(Config_Section);  
  19.         Enumeration enumeration = props.keys();  
  20.         //迭代数据存储到hashmap中   
  21.         while (enumeration.hasMoreElements()){  
  22.             String key = (String) enumeration.nextElement();  
  23.             String value = (String) props.get(key);  
  24.             hashMap.put(key, value);  
  25.         }  
  26.         return  hashMap;  
  27.     }  
  28. }  
/**
 * @author 42087743
 * 功能:读取配置文件,将数据存储到hashmap中
 * 说明:为节约版面,省去了set和get方法
 */
public class CollectionConfig {
	//设置xml文件中的name
	private final static String Config_Section = "collection";
	//声明存储数据的hashmap
	private static Map<String,String> hashMap = null;
	//主要方法,通过JFig读取配置文件
	public static Map load(String config_File){
		JFigLocator jFigLocator = new JFigLocator(config_File);
		JFigIF jFigIF = JFig.getInstance(jFigLocator);
		hashMap = new HashMap<String,String>();
		
		//存储数据到properties中
		Properties props = jFigIF.getSectionAsProperties(Config_Section);
		Enumeration enumeration = props.keys();
		//迭代数据存储到hashmap中
		while(enumeration.hasMoreElements()){
			String key = (String) enumeration.nextElement();
			String value = (String) props.get(key);
			hashMap.put(key, value);
		}
		return hashMap;
	}
}



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Proxy类

Java代码
  1. /**  
  2.  * @author 42087743   
  3.  * 功能:代理,为用户屏蔽内部代码,方便用户得到实例  
  4.  */   
  5. public   class  Proxy {  
  6.     // 创建对象hashmap,得到读取配置文件的hashmap   
  7.     private   static  Map hashMap = CollectionConfig.getHashMap();  
  8.   
  9.     // 用户输入key,返回给用户value   
  10.     public   static  Object getInstance(String key)  throws  ClassNotFoundException {  
  11.         Object value = null ;  
  12.         value = Class.forName(hashMap.get(key).toString());  
  13.         return  value;  
  14.     }  
  15. }  
/**
 * @author 42087743 
 * 功能:代理,为用户屏蔽内部代码,方便用户得到实例
 */
public class Proxy {
	// 创建对象hashmap,得到读取配置文件的hashmap
	private static Map hashMap = CollectionConfig.getHashMap();

	// 用户输入key,返回给用户value
	public static Object getInstance(String key) throws ClassNotFoundException {
		Object value = null;
		value = Class.forName(hashMap.get(key).toString());
		return value;
	}
}



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;config.xml

Java代码
  1. <?xml version= "1.0"  encoding= "utf-8" ?>  
  2. <CONFIGURATION>  
  3.     <section name="collection" >  
  4.         <entry key="java.util.List"  value= "java.util.ArrayList"  />  
  5.         <entry key="java.util.Set"  value= "java.util.HashSet"  />  
  6.         <entry key="java.util.Map"  value= "java.util.HashMap"  />  
  7.     </section>  
  8. </CONFIGURATION>  
<?xml version="1.0" encoding="utf-8"?>
<CONFIGURATION>
	<section name="collection">
		<entry key="java.util.List" value="java.util.ArrayList" />
		<entry key="java.util.Set" value="java.util.HashSet" />
		<entry key="java.util.Map" value="java.util.HashMap" />
	</section>
</CONFIGURATION>



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Test类

Java代码
  1. /**  
  2.  * @author 42087743   
  3.  * 功能:测试,读取指定的配置文件,动态加载它,最后运行它的方法  
  4.  */   
  5. public   class  Test {  
  6.     public   static   void  main(String[] args)  throws  ClassNotFoundException,  
  7.             InstantiationException, IllegalAccessException,  
  8.             IllegalArgumentException, InvocationTargetException {  
  9.         String key = "java.util.Map" ;  
  10.         // 读取配置文件   
  11.         CollectionConfig.load("com/jfig/config.xml" );  
  12.         // 加载类   
  13.         Class o = (Class) Proxy.getInstance(key);  
  14.         // 获得实例   
  15.         Object ob = o.newInstance();  
  16.         // 得到方法数组   
  17.         Method[] method = o.getMethods();  
  18.         // 迭代,匹配方法名,最后调用该方法   
  19.         for  ( int  i =  0 ; i < method.length; i++) {  
  20.             // 将==先进行比较,可以改善性能,因为==比equals速度快   
  21.             if  ( "put"  == method[i].getName()  
  22.                     || "put" .equals(method[i].getName())) {  
  23.                 // 将所有方法名放到集合中去   
  24.                 for  ( int  j =  0 ; j < method.length; j++) {  
  25.                     method[i].invoke(ob,  
  26.                             new  Object[] { j, method[j].toString() });  
  27.                 }  
  28.                 // 直接跳出循环,无须继续循环下去   
  29.                 break ;  
  30.             }  
  31.         }  
  32.         for  ( int  i =  0 ; i < method.length; i++) {  
  33.             if  ( "size"  == method[i].getName()  
  34.                     || "size" .equals(method[i].getName())) {  
  35.                 System.out.println("集合的大小是:"  + method[i].invoke(ob));  
  36.                 break ;  
  37.             }  
  38.         }  
  39.     }  
  40. }  
/**
 * @author 42087743 
 * 功能:测试,读取指定的配置文件,动态加载它,最后运行它的方法
 */
public class Test {
	public static void main(String[] args) throws ClassNotFoundException,
			InstantiationException, IllegalAccessException,
			IllegalArgumentException, InvocationTargetException {
		String key = "java.util.Map";
		// 读取配置文件
		CollectionConfig.load("com/jfig/config.xml");
		// 加载类
		Class o = (Class) Proxy.getInstance(key);
		// 获得实例
		Object ob = o.newInstance();
		// 得到方法数组
		Method[] method = o.getMethods();
		// 迭代,匹配方法名,最后调用该方法
		for (int i = 0; i < method.length; i++) {
			// 将==先进行比较,可以改善性能,因为==比equals速度快
			if ("put" == method[i].getName()
					|| "put".equals(method[i].getName())) {
				// 将所有方法名放到集合中去
				for (int j = 0; j < method.length; j++) {
					method[i].invoke(ob,
							new Object[] { j, method[j].toString() });
				}
				// 直接跳出循环,无须继续循环下去
				break;
			}
		}
		for (int i = 0; i < method.length; i++) {
			if ("size" == method[i].getName()
					|| "size".equals(method[i].getName())) {
				System.out.println("集合的大小是:" + method[i].invoke(ob));
				break;
			}
		}
	}
}



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;后来想拓展下,进 而实现spring的IOP功能,发现没有那么简单,首先就因为class类型没有办法转型到其他的常用类型,看来还需要继续研究.
[/size]

基于MATLAB的太阳能光伏电力仿真,模拟每日太阳能发电,可视化功率曲线,并通过数值积分计算总能量输出。.zip 1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 立即下载

相关推荐

【电力负荷预测】项目介绍 MATLAB实现基于BO-Transformer-LSTM贝叶斯优化算法(BO)优化Transformer-LSTM组合模型进行居民用户多步电力负荷预测(含模型描述及部分示例

内容概要:本文介绍了一个基于BO-Transformer-LSTM的组合模型,用于实现居民用户多步电力负荷预测的完整项目实例。该模型融合Transformer的全局注意力机制与LSTM的局部时序记忆能力,构建能够捕捉长时依赖与周期性特征的深度学习架构,并引入贝叶斯优化(BO)自动搜索最优超参数组合,提升预测精度与训练效率。项目涵盖从原始数据清洗、特征工程、滑动窗口样本构建、模型设计到超参数优化、反归一化及多步误差评估的全流程,强调时间顺序划分以防止信息泄露,并通过周期编码、外生变量融合等方式增强数据表达能力。文中提供了详细的MATLAB代码示例,包括数据预处理、网络搭建、贝叶斯优化配置和预测结果评估等关键步骤。 适合人群:具备一定机器学习和时间序列分析基础,熟悉MATLAB编程环境,从事电力系统预测、智能电网、负荷管理等相关领域的研究人员、工程师及研究生。 使用场景及目标:①应用于居民级或多用户聚合负荷的短期至中期多步预测(如未来24小时);②服务于配电系统运行调度、需求响应基线设定、家庭能源管理系统优化、分布式能源协调控制等实际工程场景;③为科研提供可复现的深度学习+贝叶斯优化的技术路线参考。 阅读建议:此资源以实际项目为导向,建议读者结合提供的代码逐步实现并调试模型,重点关注数据质量控制、时间特征编码、组合网络结构设计与贝叶斯优化稳定性之间的协同关系,在实践中深入理解多步预测中的误差累积机制与超参数敏感性问题。

用JFig管理配置文件

许多应用使用各种各样的配置文件。配置在应用开发中扮演着一个重要的角色。因为在java应用中,各种各样的配置文件被使用,如属性文件,XML文件等。JFig对于Java应用来说,是一个强大且易于使用的配置工具。它允许开发者管理更多的配置文件。列表1展示了一个JFig的一个简单的配置文件,名字为:主机名.config.xml,这儿的“主机名”就是hostname。这是因为JFig默认

jackoo的专栏 2411

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

Win10把默认图片保存格式变成“jfif”了,怎么变回“JPG”格式?

用过Windows 10的朋友都遇到过,就是在使用浏览器浏览网页保存图片的时候,发现保存的图片格式是“.jfif”,而不是常见的.jpg或.png格式,以这种格式保存下来的图片大部分软件都不认识。那么“.jfif”是什么格式呢?丫丫爸爸今天就给大家分享下在“Win10”系统中如何把默认的图片保存格式由“jfif”格式转化为“jpg”格式 大家有没有发现,当你在Win10系统下浏览网页,并在网络上下载的图片时,默认格式是“jfif”? 首先按键盘的“Win键+R键”,弹出“运行”对话框,输入“regedit

杨奇的博客 6万+

PotPlayer自用皮肤

自用 PotPlayer 皮肤,仅微调了字体大小与颜色,是按个人习惯调整,未做适配性调整。

2-shell及常用命令-续.pdf

2-shell及常用命令-续.pdf

python交互绘制Julia集

matplotlib的Show面板中提供了放大、移动等交互式操作,但也未能涵盖所有的交互需求,比如希望通过mandelbrot集上的一点来生成对应的Julia集。

微小冷的学习笔记 2813

MCGS触摸屏数据记录与U盘导出配置全解析

在工业自动化现场,数据记录是设备运行状态分析与故障追溯的基础。HMI触摸屏作为人机交互核心,不仅承担实时监控任务,还负责过程数据的存储与导出。理解数据采集周期、存盘机制与存储介质的匹配原理,能帮助工程师高效配置数据记录功能。合理运用定时存盘、存盘组与U盘导出,可支撑设备趋势分析、报表生成及事故排查。本文以MCGS触摸屏为例,详解数据记录的完整组态流程,并汇总常见配置陷阱与排查思路,为现场调试与长期运维提供可落地的技术参考。

weixin_34253126的博客 459

利用java反射机制 读取配置文件 实现动态类加载以及动态类型转换

Spring实现的一个重要的机制是通过反射(java.lang.reflect)读取配置文件,通过配置文件来动态生成配置文件中的类对象。Java动态加载类主要是为了不改变主程序代码,通过修改配置文件就可以操作不同的对象执行不同的功能。 由于java是强类型语言,本文根据一篇老外的博客,给出了一种可以实现动态类型转换的可行性方法和思路。 本文主要帮助你完成一下学习目标: (1) java反射机制最基础的学习。 (2) 通过最基础的java正则表达式读取配置文件,获取需要的信息。 (3) 模拟spring的IO

leixingbang的专栏 1万+

离心泵级间导叶的设计计算

离心泵级间导叶的设计计算高速离心泵级间流道的作用是将第一级复合叶轮流出的高速液流收集起来并送入第二级复合叶轮。级间流道的设计应考虑降低液体的流速,实现动能向压力能转化,减小液体的水力损失。级间流道主要有蜗壳形流道和导叶两种结构形...

cqzc55322的博客 2565

ABB机器人与西门子PLC、工业相机联合实现无序抓取的完整调试方案

将此方案导入系统后,逐步执行调试,确保各环节信号正常触发,即可实现高效无序抓取!

CHUXUEZHE8210的博客 1993

MATLAB编写用户登陆界面小结——更改界面左上角图标、输入用户名提醒和输入密码隐藏

笔者最近参加了一个小比赛,需要用MATLAB 写个软件,这里总结一下写登录界面时的一些心得体会。 实现方法是找的网上大牛提供的经验并结合自己的改进,这里就不一一列出链接,如果侵权,请联系笔者。 直接给出效果图: 主要是实现三个小功能,一个是更改了左上角的小图标;一个是用户名输入框有提醒,当鼠标点击输入框时,提醒内容消失;一个是输入密码时,会自动隐藏输入密码,输入显示为星号。以下一一列出功...

long_xuan123的博客 9608

Qt Installer Framework4.6.1的最基础使用1(win10+离线安装包 )

因工作需要,win程序发布后,打包成一可执行exe文件,且兼容win7系统笔者记录了一些关键要点,供有需要的小伙伴使用。

aggs1990的专栏 904

根据环境变量配置,动态加载配置文件(区分开发环境,生成环境)

开发中我们往往需要根据环境变量来动态加载配置文件,比如用来保证开发环 境,生成环境加载不同配置文件如数据库连接信息 1 服务器配置环境变量 2 程序判断自动加载

凌云客 4322

Hypermesh到Abaqus CEL网格转换全攻略:解决欧拉体导入难题

本文详细解析了Hypermesh到Abaqus CEL网格转换的全流程,重点解决欧拉体导入难题。通过单元类型转换、INP文件编辑和多组件合并技术,实现流固耦合仿真的高效前处理。文章包含实用脚本和工程案例,帮助工程师突破ABAQUS CEL分析中的网格转换瓶颈。

weixin_30832143的博客 189

​非线性分析-增加位移量可能出现下面错误。虽然求解无法在所有时间点完成,但在某些点上仍能够求解部分结果。请参阅“帮助系统”中的故障排除,以了解更多信息详情。由于受约束,规划求解引擎无法收敛

基于收敛状态拆分载荷步‌:在已收敛的载荷步基础上,将未收敛的关键区域拆分为更细的子步,比如在载荷突变点前设置5~10个子步,逐步加载。替换冲突约束为弱约束‌:若存在约束冲突,将刚性约束替换为弱弹簧约束(刚度设为1e-6~1e-4),既限制刚体位移,又不影响结构的变形自由度,命令流:SPRING, NODE, K, 1e-6。部分区域约束完整,但存在未被约束的刚体自由度,或约束类型与大变形/接触逻辑冲突,比如某部件的位移约束在初始阶段有效,但大变形后约束位置脱离实际受力点,导致求解器在该阶段无法收敛。

qq_15963745的博客 144

Spring中动态获取配置文件中的值(properties, 或者yml)

平时我们都习惯用@Value("${"XXXX"}")注解标注在成员变量上来获取,但是如果说没有配置则连系统都启动不了 所以我写了一个工具类可以在程序运行期间动态获取配置文件中的值: 直接上工具类: package com.zz.amqp1.utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org...

weixin_38399962的博客 1万+

【GameFramework框架内置模块】8、文件系统(File System)

最近好忙,鸽了好久。不能颓废了,继续发力。今天分享的是GF框架的文件系统。首先,引用比较官方的说法:GF的FileSystem虚拟文件系统,使用类似磁盘存储的感念对零散的文件进行集中管理,优化资源加载时产生的内存分配,也可以对资源进行局部片段加载,极大的提升了资源加载的性能。通俗点讲就是,我这个模块就是加载磁盘文件的,优化加载时产生的内存分配。那么,它是怎么优化的呢?

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2452

Jfig 读取文件

Jfig 读取文件 需要导入个jar包jfig-1.5.2.jar 文件读取类 package test; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.Properties; import org.igfay.jfig.JFi...

铁锹在手,天下我有 282

【深度学习|多实例学习】多实例学习(Multiple Instance Learning, MIL)的起源、发展和应用,附代码(一)

【深度学习|多实例学习】多实例学习(Multiple Instance Learning, MIL)的起源、发展和应用,附代码(一)

2401_89898861的博客 1919

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【Spring Boot】之 动态配置加载

使用 ConditionOnProperty()

fanfan4569的博客 1131

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

关于JFig的一点使用心得

在《深入浅出hibernate》一书中看到在DAO模式中使用开源组件JFig来管理xml配置文件,于是借用了其中的代码用在自己的Struts程序中,主要涉及到五个文件DAOFactory.java,DAOConfig.java,ClassToolKit.java,DAOException.java以及dao.xml。工作原理可简单描述为:JFig根据配置文件(这里是dao.xml)中接口类名和对应

JoanL的专栏 1488

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

各种图片编码格式详解

感谢xiangism 常见的图片格式有bmp, jpg(jpeg), png, gif, webp等。 图像基本数据结构  要讲图片格式还先得从图像的基本数据结构说起。在计算机中, 图像是由一个个像素点组成,像素点就是颜色点,而颜色最简单的方式就是用RGB或RGBA表示, 如图所示   (图1) (图2) 如果有A通道就表明这个图像可以有透明效果。 R,G,B每个分量一般是

格物穷理 5万+
上一篇: 用JFig管理配置文件
下一篇: Hibernate的三种连接池设置C3P0、Proxool和DBCP
jackoo
博客等级 码龄18年 5粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值