博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
property配置
阅读量:4591 次
发布时间:2019-06-09

本文共 11844 字,大约阅读时间需要 39 分钟。

之前把设备历史数据存储的时间周期存储在了数据库中,因为以下一些原因,我打算改写到property配置文件中

1、这个周期时间的配置没有单独放一个tabel中,导致现在设备类型越来越多,每次添加或者修改都要去数据库中找,数据混杂在一起,查看不便

2、代码在启动时去读库,读完存储到map中,由于map中存储的数据种类多,还单独搞了一个java类,添加了很多的属性以及属性的get、set方法,真是鸡肋

3、既要管理java类里的属性又要管理数据库的记录,麻烦

 

开始改写

首先,添加一个配置文件,发现一个限制,这个配置文件只能写到WEB-INF目录下,如果写在src目录下的话,war包里这个配置文件就消失了,意思就是在打包的时候不会把src下的配置文件打包到war中。

于是在WEB-INF目录下添加了一个配置文件。

其次,需要写一个类来加载这个配置文件,又遇到难题,这个路径怎么获取?

我尝试了一些方法去获取路径:

1、用类的路径来获取路径

System.out.println(FrequencyProperty.class.getResource(""));System.out.println(FrequencyProperty.class.getResource("/"));System.out.println(FrequencyProperty.class.getClassLoader().getResource(""));System.out.println(FrequencyProperty.class.getClassLoader().getResource("/"));
file:/D:/eclipse_x64/jboss-eap-6.2/standalone/deployments/mango.war/WEB-INF/dev/com/Socket/event/file:/D:/eclipse_x64/jboss-eap-6.2/modules/system/layers/base/sun/jdk/main/service-loader-resources/file:/D:/eclipse_x64/jboss-eap-6.2/modules/system/layers/base/sun/jdk/main/service-loader-resources/file:/D:/eclipse_x64/jboss-eap-6.2/modules/system/layers/base/sun/jdk/main/service-loader-resources/

 

很奇怪,只有第一个获取到了类的路径,其他的获取到的都不知道是什么鬼

2、用系统property来获取

Set
> entrySet = System.getProperties().entrySet();for (Entry
obj : entrySet) { System.out.println(obj.getKey() + " ========================== " + obj.getValue());}
java.vendor ========================== Oracle Corporationjboss.modules.system.pkgs ========================== org.jboss.bytemanjboss.qualified.host.name ========================== pc202102041904logging.configuration ========================== file:/D:/eclipse_x64/jboss-eap-6.2/standalone/configuration/logging.propertiesorg.apache.xml.security.ignoreLineBreaks ========================== truesun.java.launcher ========================== SUN_STANDARDjavax.xml.stream.XMLInputFactory ========================== __redirected.__XMLInputFactoryos.name ========================== Windows 7sun.management.compiler ========================== HotSpot 64-Bit Tiered Compilerssun.nio.ch.bugLevel ==========================java.runtime.version ========================== 1.8.0_60-b27java.vm.specification.vendor ========================== Oracle Corporationjboss.server.persist.config ========================== truesun.boot.class.path ========================== D:\eclipse_x64\jdk1.8.0_60_x64\jre\lib\resources.jar;D:\eclipse_x64\jdk1.8.0_60_x64\jre\lib\rt.jar;D:\eclipse_x64\jdk1.8.0_60_x64\jre\lib\sunrsasign.jar;D:\eclipse_x64\jdk1.8.0_60_x64\jre\lib\jsse.jar;D:\eclipse_x64\jdk1.8.0_60_x64\jre\lib\jce.jar;D:\eclipse_x64\jdk1.8.0_60_x64\jre\lib\charsets.jar;D:\eclipse_x64\jdk1.8.0_60_x64\jre\lib\jfr.jar;D:\eclipse_x64\jdk1.8.0_60_x64\jre\classessun.desktop ========================== windowsjavax.xml.parsers.SAXParserFactory ========================== __redirected.__SAXParserFactoryjavax.xml.stream.XMLEventFactory ========================== __redirected.__XMLEventFactoryjavax.xml.stream.XMLOutputFactory ========================== __redirected.__XMLOutputFactoryjboss.bind.address ========================== localhostjboss.node.name ========================== pc202102041904user.name ========================== Administratorjava.net.preferIPv4Stack ========================== truejava.util.logging.manager ========================== org.jboss.logmanager.LogManagerjava.version ========================== 1.8.0_60jboss.home.dir ========================== D:\eclipse_x64\jboss-eap-6.2sun.boot.library.path ========================== D:\eclipse_x64\jdk1.8.0_60_x64\jre\binuser.language ========================== zhuser.timezone ========================== Asia/Shanghaifile.encoding.pkg ========================== sun.iojava.endorsed.dirs ========================== D:\eclipse_x64\jdk1.8.0_60_x64\jre\lib\endorsedjboss.server.config.dir ========================== D:\eclipse_x64\jboss-eap-6.2\standalone\configurationorg.jboss.logmanager.nocolor ========================== truesun.arch.data.model ========================== 64sun.cpu.isalist ========================== amd64sun.jnu.encoding ========================== GBKfile.separator ========================== \java.class.version ========================== 52.0java.home ========================== D:\eclipse_x64\jdk1.8.0_60_x64\jrejava.specification.name ========================== Java Platform API Specificationjava.vm.info ========================== mixed modejavax.xml.parsers.DocumentBuilderFactory ========================== __redirected.__DocumentBuilderFactoryjavax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom ========================== __redirected.__XPathFactoryuser.country ========================== CNjava.protocol.handler.pkgs ========================== org.jboss.net.protocol|org.jboss.vfs.protocoljava.vm.version ========================== 25.60-b23jboss.i18n.generate-proxies ========================== trueorg.apache.catalina.connector.URI_ENCODING ========================== UTF-8org.jboss.boot.log.file ========================== D:/eclipse_x64/jboss-eap-6.2/standalone/log/boot.logos.version ========================== 6.1path.separator ========================== ;sun.awt.enableExtraMouseButtons ========================== trueuser.variant ==========================awt.toolkit ========================== sun.awt.windows.WToolkitjava.awt.printerjob ========================== sun.awt.windows.WPrinterJobjboss.modules.dir ========================== D:\eclipse_x64\jboss-eap-6.2\modulesjboss.server.deploy.dir ========================== D:\eclipse_x64\jboss-eap-6.2\standalone\data\contentmodule.path ========================== D:/eclipse_x64/jboss-eap-6.2/modulessun.io.unicode.encoding ========================== UnicodeLittleuser.script ==========================java.naming.factory.url.pkgs ========================== org.jboss.as.naming.interfaces:org.jboss.ejb.client.namingjboss.server.temp.dir ========================== D:\eclipse_x64\jboss-eap-6.2\standalone\tmpsun.rmi.dgc.client.gcInterval ========================== 3600000user.home ========================== C:\Users\Administratorjava.library.path ========================== D:\eclipse_x64\jdk1.8.0_60_x64\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;native;D:/eclipse_x64/jdk1.8.0_60_x64/bin/../jre/bin/server;D:/eclipse_x64/jdk1.8.0_60_x64/bin/../jre/bin;D:/eclipse_x64/jdk1.8.0_60_x64/bin/../jre/lib/amd64;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\eclipse_x64\jdk1.8.0_60_x64\bin;D:\eclipse_x64\jdk1.8.0_60_x64\jre\bin;D:\Program Files\TortoiseSVN\bin;C:\Program Files\MySQL\MySQL Server 5.6\bin;D:\Program Files\Redis\;D:\IDEA\apache-maven-3.5.2\bin;D:\Program Files\nodejs\;D:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;D:\Program Files\Microsoft SQL Server\100\Tools\Binn\;D:\Program Files\Microsoft SQL Server\100\DTS\Binn\;D:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;D:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;D:\Program Files\Microsoft VS Code\bin;C:\Users\Administrator\AppData\Roaming\npm;E:\eclipse_4.6_x64;;.java.specification.vendor ========================== Oracle Corporationjava.vendor.url ========================== http://java.oracle.com/org.jboss.resolver.warning ========================== trueorg.xml.sax.driver ========================== __redirected.__XMLReaderFactoryprogram.name ========================== JBossTools: Red Hat JBoss EAP 6.1+java.class.path ========================== D:\eclipse_x64\jboss-eap-6.2\jboss-modules.jarjava.runtime.name ========================== Java(TM) SE Runtime Environmentjava.vm.vendor ========================== Oracle Corporationjboss.bind.address.management ========================== localhostorg.jboss.security.context.ThreadLocal ========================== truesun.java.command ========================== org.jboss.modules.Main -mp D:/eclipse_x64/jboss-eap-6.2/modules -jaxpmodule javax.xml.jaxp-provider -jaxpmodule javax.xml.jaxp-provider org.jboss.as.standalone -b localhost --server-config=standalone.xml -Djboss.server.base.dir=D:\eclipse_x64\jboss-eap-6.2\standalonesun.rmi.dgc.server.gcInterval ========================== 3600000catalina.home ========================== D:\eclipse_x64\jboss-eap-6.2\standalone\tmpjava.vm.specification.name ========================== Java Virtual Machine Specificationjava.vm.specification.version ========================== 1.8javax.xml.validation.SchemaFactory:http://www.w3.org/2001/XMLSchema ========================== __redirected.__SchemaFactoryjboss.server.log.dir ========================== D:\eclipse_x64\jboss-eap-6.2\standalone\logsun.cpu.endian ========================== littlesun.os.patch.level ========================== Service Pack 1java.awt.graphicsenv ========================== sun.awt.Win32GraphicsEnvironmentjava.awt.headless ========================== truejava.ext.dirs ========================== D:\eclipse_x64\jdk1.8.0_60_x64\jre\lib\ext;C:\Windows\Sun\Java\lib\extjava.io.tmpdir ========================== C:\Users\ADMINI~1\AppData\Local\Temp\java.vendor.url.bug ========================== http://bugreport.sun.com/bugreport/jboss.server.data.dir ========================== D:\eclipse_x64\jboss-eap-6.2\standalone\dataos.arch ========================== amd64java.vm.name ========================== Java HotSpot(TM) 64-Bit Server VMjavax.management.builder.initial ========================== org.jboss.as.jmx.PluggableMBeanServerBuilderjboss.server.base.dir ========================== D:\eclipse_x64\jboss-eap-6.2\standaloneline.separator ==========================org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING ========================== trueuser.dir ========================== D:\eclipse_x64\jboss-eap-6.2\binfile.encoding ========================== GBKjava.specification.version ========================== 1.8javax.xml.datatype.DatatypeFactory ========================== __redirected.__DatatypeFactoryjavax.xml.transform.TransformerFactory ========================== __redirected.__TransformerFactoryjboss.host.name ========================== pc202102041904jboss.server.name ========================== pc202102041904

 

这个jboss.server.base.dir还是有用的

相比较这个方式1和方式2,方式一的更可取,因为方式一包含了项目的名称,这样只要截取就行,但是方法2还需要固定的加上项目名称,但是名称一旦改变,还得记着来改这里,这样不太合适

还有一点比较奇怪的地方,一开始我不想截取方式一中的字符串,我想用上级目录来获取,但是结果有点让人诧异

System.out.println(FrequencyProperty.class.getResource(""));System.out.println(FrequencyProperty.class.getResource("../"));System.out.println(FrequencyProperty.class.getResource("../../"));System.out.println(FrequencyProperty.class.getResource("../../../"));
file:/D:/eclipse_x64/jboss-eap-6.2/standalone/deployments/mango.war/WEB-INF/dev/com/Socket/event/file:/D:/eclipse_x64/jboss-eap-6.2/standalone/deployments/mango.war/WEB-INF/dev/com/Socket/jar:file:/D:/eclipse_x64/jboss-eap-6.2/modules/system/layers/base/javax/activation/api/main/activation-1.1.1-redhat-2.jar!/com/file:/D:/eclipse_x64/jboss-eap-6.2/modules/system/layers/base/sun/jdk/main/service-loader-resources/

 

搞不懂,除了第二个是真的上级,其他两个都是啥

看下最终的代码吧

String path = FrequencyProperty.class.getResource("").getPath();path = path.replace("dev/com/Socket/event/", "");InputStream in = new FileInputStream(path + "frequency.properties");props.load(in);

 

对了,如果单纯的只跑main方法,不跑web项目,结果又是大不一样

System.out.println(FrequencyProperty.class.getResource(""));System.out.println(FrequencyProperty.class.getResource("/"));System.out.println(FrequencyProperty.class.getClassLoader().getResource(""));System.out.println(FrequencyProperty.class.getClassLoader().getResource("/"));
file:/D:/eclipse_x64/workspace/mango/classes/hot/com/Socket/event/file:/D:/eclipse_x64/workspace/mango/classes/hot/file:/D:/eclipse_x64/workspace/mango/classes/hot/null

 

没有时间深入去研究了,暂且就这样记录下来吧,渴死了,喝口水去

 

转载于:https://www.cnblogs.com/LcxSummer/p/11270324.html

你可能感兴趣的文章
虚拟机centos笔记整理,持续更新~~
查看>>
Spring MVC访问静态资源
查看>>
jquery实现的个性网站首页 详细信息
查看>>
poj2096 Collecting Bugs
查看>>
【机器学习】关联规则挖掘(二):频繁模式树FP-growth
查看>>
MD5加密
查看>>
关于R软件的安装
查看>>
小程序上传图片
查看>>
1-1000的所有的完数
查看>>
Sharepoint
查看>>
bootstrap treeview 树形数据生成
查看>>
C++ Primer 读书笔记整理(一)
查看>>
[SAP FI-AP]自動支払(tr-cd:F110)に関係するテーブル
查看>>
Visual Studio 2013 中 mysql 使用 EF6
查看>>
mybatis批量更新报错badsql
查看>>
php setcooike()失败的原因之一,希望能帮到你
查看>>
sublime
查看>>
Oracle Audit 审计功能的认识与使用
查看>>
从不同的角度分析Flex的优缺点
查看>>
【RabbitMQ】消息队列RabbitMQ与Spring集成
查看>>