这是我的问题陈述:
我有一个项目A,它是在春天建造的,是一个maven项目。有一个项目B(不使用任何框架),我正在开发一个库,其职责只是进行一些REST调用。我在项目B的类中调用函数(包括B作为A中的jar)
现在,在进行一些调用时,我意识到我想要读取项目B中项目A的本地/ UAT / PROD.properties文件中的值。这些文件的位置是A / src / main / resources / config。
如何在不将值作为参数从A传递给B的情况下实现此目的?
答案 0 :(得分:0)
您需要确保要使用的属性文件实际包含在projectB.jar
中。您可能需要查阅Maven文档。如果文件实际上在jar中,那么你可以使用 -
Properties.load(getClass.getResourseAsStream("path/to/the/property/file.properties"));
抓住道具。
答案 1 :(得分:0)
最好将属性文件移出您编译的包之外,使其独立于您部署的环境。 您还应该考虑添加一个环境变量(A_CONFIG_LOCATION)来指向您的属性文件,使其更加模块化。为此,请将此代码段添加到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>
通过使用此方法,您还将了解在Spring应用程序(App A)中在运行时对属性文件所做的任何更改。您可以通过向文件更改侦听器添加文件更改侦听器来向App B添加相同的行为。