在另一个java项目中读取一个java项目的属性文件
以下是我的问题陈述: 我有一个项目是在春天建立的,是一个maven项目。有一个项目B(不使用任何框架),我正在开发它作为一个库,它的职责只是进行一些REST调用。我正在从项目A调用项目B类中的函数(包括A中作为jar的B) 现在,在进行一些调用时,我意识到我想读取项目B中项目A的local/UAT/PROD.properties文件中的值。这些文件的位置是A/src/main/resources/config在另一个java项目中读取一个java项目的属性文件,java,spring,maven,Java,Spring,Maven,以下是我的问题陈述: 我有一个项目是在春天建立的,是一个maven项目。有一个项目B(不使用任何框架),我正在开发它作为一个库,它的职责只是进行一些REST调用。我正在从项目A调用项目B类中的函数(包括A中作为jar的B) 现在,在进行一些调用时,我意识到我想读取项目B中项目A的local/UAT/PROD.properties文件中的值。这些文件的位置是A/src/main/resources/config 如何在不将值作为参数从A传递到B的情况下实现这一点?您需要确保要使用的属性文件实际包含
如何在不将值作为参数从A传递到B的情况下实现这一点?您需要确保要使用的属性文件实际包含在
projectB.jar
中。为此,您可能需要查阅Maven文档。如果文件实际上在jar中,那么您可以使用-
Properties.load(getClass.getResourseAsStream("path/to/the/property/file.properties"));
要获得道具。您需要确保要使用的属性文件实际包含在
projectB.jar
中。为此,您可能需要查阅Maven文档。如果文件实际上在jar中,那么您可以使用-
Properties.load(getClass.getResourseAsStream("path/to/the/property/file.properties"));
获取道具。最好将属性文件移到编译的包之外,使其独立于部署的环境。 您还应该考虑添加一个环境变量(AxObjixLoad)来指向属性文件以使其稍微有点模块化。要实现此目的,请将此代码段添加到servlet-context.xml中:
<context:property-placeholder
location="file:${A_CONFIG_LOCATION}/configuration.properties" />
<beans:bean id="propertiesLoader"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<beans:property name="cacheSeconds" value="1" />
<beans:property name="basenames">
<beans:list>
<beans:value>file:${A_CONFIG_LOCATION}/configuration
</beans:value>
</beans:list>
</beans:property>
</beans:bean>
文件:${A\u CONFIG\u LOCATION}/configuration
通过使用这种方法,您还将知道在Spring应用程序(app A)的运行时对您的属性文件所做的任何更改。通过将文件更改侦听器添加到属性文件读取器,您可以向应用程序B添加相同的行为 将属性文件移到您编译的包之外,使其独立于您部署的环境,这是一种很好的做法。 您还应该考虑添加一个环境变量(AxObjixLoad)来指向属性文件以使其稍微有点模块化。要实现此目的,请将此代码段添加到servlet-context.xml中:
<context:property-placeholder
location="file:${A_CONFIG_LOCATION}/configuration.properties" />
<beans:bean id="propertiesLoader"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<beans:property name="cacheSeconds" value="1" />
<beans:property name="basenames">
<beans:list>
<beans:value>file:${A_CONFIG_LOCATION}/configuration
</beans:value>
</beans:list>
</beans:property>
</beans:bean>
文件:${A\u CONFIG\u LOCATION}/configuration
通过使用这种方法,您还将知道在Spring应用程序(app A)的运行时对您的属性文件所做的任何更改。通过将文件更改侦听器添加到属性文件读取器,您可以向应用程序B添加相同的行为 我觉得这是一个循环依赖的例子。项目B是项目A的外部库。项目B需要从项目A中读取一些属性。因此,在部署/引导应用程序时,您将首先读取哪些属性?依我看,您需要以某种方式将属性传递给项目B。或者创建一个可以从项目a和项目中读取的单独文件。这可以解决你的问题。我觉得这是一个循环依赖的情况。项目B是项目A的外部库。项目B需要从项目A中读取一些属性。因此,在部署/引导应用程序时,您将首先读取哪些属性?依我看,您需要以某种方式将属性传递给项目B。或者创建一个可以从项目a和项目中读取的单独文件。这可以解决你的问题。