将-properties文件做成包外映射

测试环境中,随便stop和restart项目都无所谓,但在生产环境中,我们想要动态的修改配置信息就会很麻烦。这里用springBoot的 @PropertySource来读取.properties配置文件

1.读取本项目resources目录下的.properties配置文件

1.1 读取application.properties文件

在application.properties文件里写如下代码

1
name=crh

读取application.properties文件里的信息不需要设置文件路径

1.2 读取新建的.properties文件

1
name=crh

在.java文件里读取.properties文件的路径,@PropertySource可以放在任意一个java文件里,做好放在main函数里

1
@PropertySource(value = "classpath:dynamic.properties")

2.包外的.properties文件

2.1读取本地的.properties文件

1
name=crh

在.java文件里读取F盘的dynamic.properties文件的路径

1
@PropertySource(value = "file:F:/GitLib/target/dynamic.properties")

2.2部署到服务器上后,读取包外的.properties文件

1
name=crh

在.java文件里读取dynamic.properties文件的路径,我这里写的路径是tomcat的webapps的路径,dynamic.properties文件放在webapps下

2.2.1 绝对路径方式
1
@PropertySource(value = "file:/root/tomcat/apache-tomcat-8.5.23/webapps/dynamic.properties")
2.2.2 相对路径方式
1
@PropertySource(value = "classpath:dynamic.properties")

需在tomcat里配置classpath,在tomcat/conf下找到catalina.properties,找到shared.loader,添加shared.loader=/root/tomcat/apache-tomcat-8.5.23/webapps,启动tomcat。

3.编写java文件获取配置文件资源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class ApplicationProperties {

private static ResourceBundle resourceBundle = ResourceBundle.getBundle("application");
private static ResourceBundle resourceBundle2 = ResourceBundle.getBundle("dynamic");

public static String getText(String key) {
try {
return resourceBundle.getString(key);
} catch (Exception e) {

}
return null;
}

public static String getResource(String key) {
try {
return resourceBundle2.getString(key);
} catch (Exception e) {

}
return null;
}
}

调用只需要使用类名调用静态方法就可以了,例如ApplicationProperties.getText(“.properties文件里的属性名称,例如name”),可以获取到name的值crh

至此,所有的设置都完成了(^-^)