本文概览:介绍了通过java.util.Properties类和Spring配置中获取配置文件中值
1 Properties文件
1.1 使用java.util.Properties类
使用Properties来读取配置文件,代码举例如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class TestProperty { @Test public void testProperty() { Properties properties = new Properties(); String configFile = "/test/resources/app-config.properties"; try { FileInputStream fis = new FileInputStream(configFile); properties.load(fis); String value = properties.getProperty("service.name"); System.out.println(value); } catch (Exception e) { System.out.println(e.getMessage()); } } } |
有些地方需要注意:
1、如果配置文件中存在转移符号“\”,那么会自动识别。如下
在配置文件配置“key=2344\@123”,其实效果和“key=2344@123”效果一样。
1.2 Spring配置
在xml中配置如下
1 2 |
<!-- 加载properties文件 --> <context:property-placeholder location="classpath:config.properties" /> |
这里需要注意一点就是在spring mvc的工程里面,root的上下文和dispatcherServlet对应的mvc.xml中都需要增加一个这个配置,即工程中需要两个地方配置这个,原因是什么?我们可以看下这两个上下文初始化过程
- 第一步 ContextLoaderListener对root上下文进行初始化,通过解析xml文件和properties文件初始化bean,然后装载到上下文中。
- 第二步 DispatcherServlet初始化自己上下文,通过解析xml文件和properties文件初始化bean,然后装载到上下文中;最后把父上下文属性设置为root上下文。
通过以上我们可以看出,这两个上下文的父子关系是在初始化完成之后确定的。在初始化过程中要使用properties,所以需要指定两份<context:property-placeholder>
2 环境变量
分为系统环境变量和JVM环境变量 两类。
2.1 JVM环境变量
在运行命令时通过-D指定,如下
1 |
java -DparamName=xxx Test.class |
也可以在代码中设置,
1 |
System.setProperty("paramName","xxx"); |
在程序获取
1 |
System.getProperty("paramName"); |
问题1:JVM环境变化和Propeties文件关系
System中jvm的环境变量是使用Properties对象保存的。
1 2 3 4 |
Class System { // 保存JVM的环境变量 private static Properties props; } |
可以通System.setProperties(Properties props) 将Propeties转换JVM的环境变量。
2.2 系统环境变量
代码如下:
1 |
System.getenv("paramName"); |
(全文完)