`
sundful
  • 浏览: 1262023 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于系统读取properties配置文件的路径问题,包括打成jar包的运行文件

    博客分类:
  • Java
 
阅读更多

在当前的一个项目中,遇到以下业务需要:

1.开发环境是在myeclipse里运行的时候,启动服务后,有一个加载配置文件属性信息的Global.java。用于得到配置文件里的配置信息;

2.发布系统的时候,需要把系统打成jar执行,这时候之前的加载配置文件的方法就不起作用了得不到配置文件的路径;

3.因在系统刚启动时,需要启动加载一个Listener,在Listener里又加载了一个配置文件。

4.以上加载配置文件,都是只能加载一次配置文件,当配置文件的内容修改后,只能再次重启服务后才能读取到变动的配置内容,系统中有些配置参数是需要时时获取配置文件里的最新参数信息。

如何在以上场景加载配置文件呢,通过来回的找资料、调试,终于搞定。以下是具体代码:

package test;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
public class Test {
	public static void main(String[] args) throws Exception{
		System.out.println(load1());//通过ClassLoader方式加载配置文件
		System.out.println(load2());//
		
	}
	/**
	 * 通过ClassLoader方式加载配置文件
	 * 这种加载方式:
	 * 			1.可在myeclipse里运行时得到配置文件路径;
	 * 			2.亦可在把项目打成jar包运行时,得到配置文件路径;
	 */
	public static String load1()throws Exception{
		Properties p = new Properties();
		InputStream in = Test.class.getClassLoader().getResourceAsStream("config/config.properties");
		p.load(in);
		return  p.getProperty("user_name").toString().trim(); 
	}
	
	/**
	 * 自动加载配置文件机制,可在修改配置文件后,不用重启服务也能得到配置文件的新内容
	 */
	public static String load2()throws Exception{
		String file_name = Test.class.getClassLoader().getResource("config/config.properties").getFile();
		Properties p = new Properties();
		PropertiesConfiguration propconfig =null;//创建自动加载的机制
		propconfig = new PropertiesConfiguration();
		propconfig.setEncoding("UTF-8");//设置编码
		propconfig.setReloadingStrategy(new FileChangedReloadingStrategy());//设置自动冲加载机制
		p.load(new FileInputStream(file_name));
		return p.getProperty("user_name").toString().trim();//每次调用这个方法都会从配置文件里取到最新的参数
	}
}

 

分享到:
评论

相关推荐

    解决SpringBoot打成jar运行后无法读取resources里的文件问题

    在使用SpringBoot进行开发时,我们...通过以上知识点的介绍,我们可以解决SpringBoot应用打成jar包后无法读取resources目录下文件的问题,并且在处理数据时能够更加高效。希望这些内容能对大家在实际开发中有所帮助。

    java项目打包成可执行jar用log4j将日志写在jar所在目录操作

    这样,当jar包运行时,Spring Boot会按照一定的优先级顺序从多个路径来加载application.properties配置文件,这些路径包括jar包同级目录下的/config目录、classpath里的/config目录以及classpath同级目录等。...

    Springboot项目打war包docker包找不到resource下静态资源的解决方案

    在Spring Boot项目中,开发人员经常遇到一个问题,即在将应用打包成WAR并部署到Docker容器时,无法访问在`src/main/resources`目录下的静态资源。这种情况通常发生在使用内嵌Tomcat作为应用服务器的Spring Boot应用...

    ant入门资料.快速上手

    这段示例代码展示了如何清理旧的构建结果、编译Java源代码、运行单元测试以及打包成JAR文件。 #### 五、Ant进阶 随着对Ant的深入了解,你可以学习更高级的功能,如条件判断、循环等。 #### 六、Ant常用Task **...

    java常用框架学习笔记

    - **访问Properties文件**:Spring提供了多种方式来读取和管理Properties文件中的配置信息。 ##### 2.3 AOP容器(AspectOrientedProgramming) 面向切面编程(AOP)是Spring框架的重要特性之一,它允许开发者将横...

    传智播客视频JavaSE学习笔记

    `Properties`类继承自`Hashtable`,用于处理键值对配置信息,常用于读写.properties配置文件。 #### 十二、打印流 `PrintStream`和`PrintWriter`类提供了方便的打印输出方法,常用于标准输出、日志记录等。 #### ...

    BaselineProblem

    - **打包**:如果项目包含多个类,可能会使用`<jar>`任务将它们打包成JAR文件,便于分发和执行。 - **测试**:使用`<junit>`任务运行单元测试,确保代码质量。 - **部署**:最后,Ant脚本可以用来部署生成的JAR或...

Global site tag (gtag.js) - Google Analytics