因此,您想从属性文件中加载一些与 db 相关的数据,但您想实现一个用系统属性数据覆盖该数据的功能,为什么不能这样做呢?
Properties prop = new Properties();
try {
prop.load(new FileInputStream("config.properties"));
String connUrl = prop.getProperty("com.abc.project.model.jdbc.ConnectionUrl");
String theOtherConnUrl = System.getProperty("com.abc.project.model.jdbc.ConnectionUrl");
if(theOtherConnUrl!=null){
connUrl = theOtherConnUrl;
...
我相信覆盖行为将取决于您实现将从属性文件和系统属性中检索此数据的代码的方式,为什么不将所有与数据库相关的数据留在单个属性文件中(具有多个连接数据由不同的参数名称分隔,例如 jdbc.sqlserver.host 和 jdbc.oracle.host)并使用标志来标识您要使用的数据(您可以将此标志放在系统属性中,例如 -Dcom.abc。 project.model.jdbc.db=sqlserver)。