我有一个场景,我需要从属性文件中获取值,而我需要获取的值将来自变量。
我的道具档案
org1 =active
org1_oracle_user = blah
org1_oracle_password = blahblah
org2 =active
org2_oracle_user = blah2
org2_oracle_password = blah2blah2
org3 = Active
org3_oracle_user = blah3
org3_oracle_password = blah3blah3
现在我通过一些输入得到了组织的价值,我能够保存到某个变量中。
现在,如何使用不带数据编织的流变量从属性文件中获取值。 我知道如何通过dataweave获取值如下
<set-variable variableName="orgTypeStatus" value="#[dw('p(flowVars.org_name)')]" doc:name="orgTypeStatusVariable" />
但无法知道如何在没有数据编织的情况下获取值。
我给出了一个示例示例,因为有其他基于组织名称的道具,我无法对其进行硬编码
答案 0 :(得分:1)
通常,如果您需要从属性文件中选择值,可以使用${}
之类的内容: -
<logger level="INFO" message="${org1}" doc:name="Logger"/>
但根据您的问题here,我可以看到您想在不使用dataweave的情况下尝试此操作。 因此,要动态化并动态选择属性值,您需要使用spring加载属性文件: -
<spring:beans>
<spring:bean id="appProps" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<spring:property name="singleton" value="true"/>
<spring:property name="location" value="classpath:dev.properties"/>
</spring:bean>
</spring:beans>
现在,在流程中,您可以尝试动态关注:
<logger level="INFO" message="${org1}" doc:name="Logger"/>
<set-variable variableName="org_name" value="org1" doc:name="OrgNameVariable" />
<set-variable variableName="orgTypeStatus" value="#[app.registry.appProps[flowVars.org_name]]" doc:name="orgTypeStatusVariable" />
<set-variable variableName="m_user" value="#[app.registry.appProps[flowVars.org_name +'_oracle_user']]" doc:name="user"/>
<logger message="Logging variables:- m_user: #[flowVars.m_user] orgTypeStatus: #[flowVars.orgTypeStatus]" level="INFO" doc:name="Logger" />