- 浏览: 508468 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
wang1352083:
正在搭建tomcat源码.一会儿参照楼主经验搭建spring源 ...
Eclipse中阅读开源项目代码 -
w123456789zzzz:
谢谢你,问题解决了,楼主万岁!!
eclipse中如何安装插件 -
xiaoLee:
...
软件性能测试论文草稿 -
铃儿响叮当:
...
使用firefox调试js -
gogopengyou:
很细心啊
eclipse中如何安装插件
背景:项目中有许多可选参数,这时如果采取硬编码的方式将非常不利于扩展,因此想到将参数写进配置文件,需要参数时再从配置文件中进行加载。
调用方式:
解析之读属性:
a、URL confFile = TestConfig.class.getClassLoader().getResource(configPath);//查找指定名称的资源,资源是可以通过类代码以与代码基无关的方式访问的某些数据(图像、声音、文本等)。
资源名称是以 '/' 分隔的标识资源的路径名称。
b、 in = confFile.openStream();//打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。此方法是下面方法的缩写:
openConnection().getInputStream()
c、 p.load(in);//从输入流中读取属性列表(键和元素对)
d、String googleMapKey = getProperty(p, GOOGLE_MAP_KEY);//通过键搜索属性
疑问:为什么使用到了ClassLoader机制,直接读不行吗?
解析之写属性:研究对象为writeProperty方法
a、 URLDecoder.decode(TestConfig.class.getClassLoader().getResource(configPath).getPath(), enc);//对路径进行解码
URLDecoder:HTML 格式解码的实用工具类。该类包含了将 String 从application/x-www-form-urlencoded MIME 格式解码的静态方法
b、 p.stringPropertyNames()返回此属性列表中的键集
public class TestConfig { protected final static String enc = "utf-8"; private final static String LINE_SEPARATOR = System.getProperty("line.separator"); protected static Properties init(String configPath) { Properties p = new Properties(); InputStream in = null; try { URL confFile = TestConfig.class.getClassLoader().getResource(configPath); in = confFile.openStream(); p.load(in); } catch (IOException e) { e.printStackTrace(); } finally { try { if (in != null) { in.close(); } } catch (IOException e) { e.printStackTrace(); } } return p; } protected static String getProperty(Properties p, String key) { return p.getProperty(key.trim()); } protected static boolean writeProperty(Properties p, String configPath, String key, String value) throws IOException { FileOutputStream out = new FileOutputStream(URLDecoder.decode(TestConfig.class.getClassLoader().getResource(configPath).getPath(), enc)); BufferedOutputStream bos = new BufferedOutputStream(out); boolean isExistPropertyName = false; try { for (String tmpKey : p.stringPropertyNames()) { String line; if(key.equals(tmpKey)) { isExistPropertyName = true; p.setProperty(key, value); line = tmpKey + "=" + value + LINE_SEPARATOR; } else { line = tmpKey + "=" + p.getProperty(tmpKey) + LINE_SEPARATOR; } byte[] linebytes = line.getBytes(enc); bos.write(linebytes); } if(!isExistPropertyName) { p.put(key, value); String newLine = key + "=" + value + LINE_SEPARATOR; bos.write(newLine.getBytes(enc)); } return true; } finally { bos.flush(); bos.close(); } } }
调用方式:
public class MyConfigUtil extends TesttConfig { private static Properties p = new Properties(); private final static int DEFAULT_SECURITY_POLICY_PORT = 5907; private final static String DEFAULT_GOOGLE_MAP_KEY = "ABQIAAAAWA_efwiQDHrv6MYDa3HE3hTwM0brOpm-All5BF6PoaKBxRWWERSSjUV6DjLhSErRl9rovZBNtOhfds"; private final static String DEFAULT_GOOGLE_MAP_SERVER_URL="http://ditu.google.cn/maps"; static { p = init(CONFIG_PATH); } //google map key public static String getGoogleMapKey() { String googleMapKey = getProperty(p, GOOGLE_MAP_KEY); if(googleMapKey == null || "".equals(googleMapKey)) { return DEFAULT_GOOGLE_MAP_KEY; } return googleMapKey; } public static boolean saveGoogleMapKey(String value) throws IOException { return writeProperty(p, CONFIG_PATH, GOOGLE_MAP_KEY, value); } //securityPort public static int getSecurityPolicyPort() throws Exception { File appFile = getFlexAppConfig(); int port = -1; XMLBuilder builder = XMLBuilder.createBuilder(appFile); NodeList policyList = builder.findNodeList(APPLICATION_SECURITY_POLICY_PORT); if(policyList != null && policyList.getLength() > 0) { Node node = policyList.item(0); port = Integer.parseInt(node.getTextContent()); } if(port == -1) { return DEFAULT_SECURITY_POLICY_PORT; } return port; } private static File getFlexAppConfig() throws UnsupportedEncodingException { String filePath = URLDecoder.decode(AbstractConfig.class.getClassLoader().getResource(APP_CONFIG).getPath(), enc); return new File(filePath); } }
解析之读属性:
a、URL confFile = TestConfig.class.getClassLoader().getResource(configPath);//查找指定名称的资源,资源是可以通过类代码以与代码基无关的方式访问的某些数据(图像、声音、文本等)。
资源名称是以 '/' 分隔的标识资源的路径名称。
b、 in = confFile.openStream();//打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。此方法是下面方法的缩写:
openConnection().getInputStream()
c、 p.load(in);//从输入流中读取属性列表(键和元素对)
d、String googleMapKey = getProperty(p, GOOGLE_MAP_KEY);//通过键搜索属性
疑问:为什么使用到了ClassLoader机制,直接读不行吗?
解析之写属性:研究对象为writeProperty方法
a、 URLDecoder.decode(TestConfig.class.getClassLoader().getResource(configPath).getPath(), enc);//对路径进行解码
URLDecoder:HTML 格式解码的实用工具类。该类包含了将 String 从application/x-www-form-urlencoded MIME 格式解码的静态方法
b、 p.stringPropertyNames()返回此属性列表中的键集
发表评论
-
性能问题
2013-09-04 20:13 0<SERVICE CLASS=" ... -
ant中使用svn检出代码
2011-05-14 21:33 2955[size=large][size=large][size=l ... -
Ant与批处理(win环境)学习3
2011-04-10 23:48 1210此篇主要讲实践,大多数情况下是直接贴的代码了 ... -
VNC之代理
2011-03-27 22:48 2770[size=large] 背景:使用VNC客户端去连接DC上 ... -
1号~15号工作日志
2011-01-16 22:23 8831、 Flex的includeInLayout属 ... -
JAVA异常处理
2011-01-11 22:51 694在je上看到一篇有关异常处理的文章,觉得还不错... . ... -
offLineMap2工作日记之getBoolean
2011-01-06 23:25 7901、如字段不是get**开头的boolean 如: boole ... -
开发常用小工具集
2011-01-06 22:26 2012毕业也有半年了,我有幸能加入一家知名IT公司并从事时下最 ... -
Eclipse中阅读开源项目代码
2010-12-25 22:57 2712[size=large] 背景:由于最近较为系统地学习了 ... -
Eclipse调试深入
2010-12-25 18:59 1314背景:我个人的调 ... -
Java打包总结
2010-12-19 22:35 1406背景:最近下载了一 ... -
Ant与批处理(win环境)学习笔记(2)
2010-12-19 22:01 1223在《Ant与批处理(win环境)学习笔记》中学习了Ant的一些 ... -
Ant与批处理(win环境)学习笔记
2010-12-19 10:27 1442背景:最近个人附 ... -
JDK工具学习
2010-12-18 22:14 1025[size=large] 起因:在 ... -
Eclipse插件安装总结
2010-12-18 12:29 1201大学时一直使用的 ... -
使用Ant和Maven构建时出现OOM异常
2010-12-14 23:14 1755今日更新测试环境时报OOM错误(工程中使用了Ant和Ma ... -
JAVA技术见识集
2010-12-12 09:34 869[size=large] 将网上看到的一些适用于指定场景的 ... -
Eclipse异常集
2010-12-08 19:52 22861、 Eclipse异常说An internal Error ... -
将批处理文件注册成服务
2010-11-15 19:49 3532前两天完成了将java程序注册成win服务,如今本人有一 ... -
将java程序做成windows系统服务
2010-11-11 19:42 2303近日一直在忙于Rhel( ...
相关推荐
Java配置是IT行业中常见的一项工作,它涉及到Java开发环境的搭建和管理,这对于任何Java开发者来说都是基础且至关重要的。本压缩包“Java配置.rar”提供了构建Java开发环境所需的关键工具,包括Jdk 1.8、Maven、...
7. **可视化界面**:提供图形用户界面(GUI)以方便管理员操作,显示配置项、版本信息和变更日志。 8. **集成能力**:与持续集成/持续部署(CI/CD)工具如Jenkins、GitLab CI/CD等集成,确保配置在部署过程中的一致性...
这个例子中,我们使用`Files.readString()`读取整个文件内容,然后通过`lines()`和`Collectors.toMap()`转换成一个Map,方便访问配置项。 **注意事项** 1. 当配置文件不在项目类路径下时,需提供绝对路径或相对...
3. **注释**:为每个重要的配置项添加注释,解释其用途和可能的值。这对于后期维护和团队协作非常有用。 4. **安全考虑**:避免在配置文件中暴露敏感信息,如数据库密码或API密钥。可以使用环境变量或加密方法来...
在IT行业中,配置项管理是软件开发过程中的关键环节,它涉及到应用程序的设置、环境变量、数据库连接信息等。源码级别的理解配置项对于优化代码、调试和维护系统至关重要。"读配置项源码.rar"可能包含了一系列关于...
重要的.properties文件包括wt.properties(包含主要的Java配置项和Windchill系统配置项),service.properties(包含Windchill动态代理模式的配置项),db.properties(包含数据库的配置信息)。 6. 使用Eclipse...
在IT领域,尤其是在软件开发与Java编程环境中,正确配置Java环境是确保项目顺利进行的关键步骤。根据提供的文件信息,我们将深入探讨如何配置Java环境,包括CLASSPATH、JAVA_HOME、JBOSS_HOME以及Path等关键环境变量...
4. **注释的重要性**:在配置文件中添加清晰的注释对于初学者来说极其宝贵,可以帮助理解每个配置项的作用,便于学习和调试。注释应详细解释配置的目的、如何工作以及可能的修改选项。 5. **最佳实践**:在整合过程...
"Java 配置 GDAL 库的大坑" Java 配置 GDAL 库时容易遇到的问题是版本不一致导致的错误。GDAL 库是一个开源的地理信息系统(GIS)库,提供了对栅格和矢量数据的支持。在 Java 中使用 GDAL 库需要将其配置到 Java ...
它通常采用键值对的形式存储配置项,便于检索和管理。 2. **客户端SDK**:系统中的各个微服务或应用会集成这个SDK,以连接配置中心并获取相应的配置信息。在本项目中,客户端是基于Netty4实现的,Netty是一个高性能...
4. 获取配置项:通过`Properties.getProperty()`方法获取特定的配置项。 5. 写入配置:如果需要修改或添加配置,可以使用`Properties.setProperty()`,然后调用`Properties.store()`来保存更改。 然而,这个"Java...
这就是使用Java配置Foxmail发送带有附件的邮件的基本步骤。当然,实际应用中可能需要处理更多细节,比如异常处理、邮件格式化、HTML内容支持等。如果你有`Java发邮箱(带附件).docx`文档,可以参考其中的示例代码...
对于初学Java的朋友而言,配置Java环境常常是一项艰巨的任务,尤其是如何正确设置`classpath`。这篇文章将通过一系列实际操作来详细阐述`classpath`的配置过程,帮助大家解决在配置过程中可能遇到的问题。 #### 二...
使用 XML 作为配置文件有很多好处,例如可以轻松地更改配置项,而不需要修改代码。 在读取 XML 配置文件时,有多种解析器可以选择,主要有 DOM 和 SAX 两种。DOM 解析器将整个 XML 文件加载到内存中,然后进行解析...
在Java配置中,我们需要添加`%JAVA_HOME%\bin` 和 `%JAVA_HOME%\jre\bin` 到Path变量中。这样,当你在命令行输入 `java`, `javac`, 或其他Java相关命令时,系统能够找到这些可执行文件。 示例中的Path变量值包含了...
在Java Web开发中,实现图片上传功能是一项常见的需求。这个配置文档主要涵盖了如何在Java环境中配置和使用相关工具来处理图片上传的过程。首先,我们来深入理解涉及的关键知识点。 1. **Servlet与Multipart解析器*...
总结来说,Java运行环境的配置是一项基础但重要的工作,它确保了Java程序能够正常编译和运行。理解并掌握这个过程,对于学习和开发Java应用程序至关重要。通过正确配置环境变量,我们可以方便地利用JDK提供的工具,...