mule/java—从java类读取jar依赖项内部的属性文件

mule/java—从java类读取jar依赖项内部的属性文件,java,jar,mule,properties-file,Java,Jar,Mule,Properties File,这里我的需求是,我创建了一个具有java类的mule应用程序。我不想将一些值作为硬编码保存,所以我尝试将其外部化。我将该值保存在mule-app.properties文件中,并使用FileInputStream,如下所示 String propFileName = "src/main/app/mule-app.properties" Properties property = new Properties(); property.load(new FileInputStream(propFile

这里我的需求是,我创建了一个具有java类的mule应用程序。我不想将一些值作为硬编码保存,所以我尝试将其外部化。我将该值保存在mule-app.properties文件中,并使用FileInputStream,如下所示

String propFileName = "src/main/app/mule-app.properties"
Properties property = new Properties();
property.load(new FileInputStream(propFileName));
但这段代码需要部署在CloudHub上;没有找到该文件是错误的。我尝试将文件名的路径指定为

String propFileName = "target/classes/mule-app.properties"
对于这两种情况,它在本地运行良好,但在CloudHub上给出与“未找到文件”相同的结果

解决办法是什么

另一件事是我有一个共同的代码,在其中我们保留了与不同环境相关的所有属性。这个通用代码的打包是以jar的形式进行的。所以,我可以保留我在上面代码中使用的属性并从jar本身读取它吗


如果是,那么如何执行?

如果要在cloudhub中部署并外部化属性文件,最好使用cloudhub属性选项卡外部化值。
参考:-

在Java类中,您可以使用:-
System.getProperty(“yourpropertykey”)
就这么简单:)


关于在公共jar应用程序中保留属性文件,您需要使用
从公共jar应用程序的类路径中提取属性文件,并可以在主机应用程序mule flow中使用它

要实现这一点,我们可以做一件事。为要获取的每个属性使用表达式组件集变量

<expression-component doc:name="setVariable"><![CDATA[flowVars.clientId="${poc.clientId}";]]></expression-component>

使用下面的示例代码,它应该可以工作

FileInputStream fi = new FileInputStream(System.getProperty("C:\Users\userName\
      AnypointStudio\workspace\test\src\main\resources\my-app1.propertie");

Properties prop = new Properties();
prop.load(fi)

它肯定会工作,但在部署到云端或on-prem后,它将无法读取属性。这不是编写整个路径位置的好做法。
FileInputStream fi = new FileInputStream(System.getProperty("C:\Users\userName\
      AnypointStudio\workspace\test\src\main\resources\my-app1.propertie");

Properties prop = new Properties();
prop.load(fi)