mule/java—从java类读取jar依赖项内部的属性文件
这里我的需求是,我创建了一个具有java类的mule应用程序。我不想将一些值作为硬编码保存,所以我尝试将其外部化。我将该值保存在mule-app.properties文件中,并使用FileInputStream,如下所示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
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)