在另一个java项目中读取一个java项目的属性文件

时间:2017-09-18 15:46:57

标签: java spring maven

这是我的问题陈述:

我有一个项目A,它是在春天建造的,是一个maven项目。有一个项目B(不使用任何框架),我正在开发一个库,其职责只是进行一些REST调用。我在项目B的类中调用函数(包括B作为A中的jar)

现在,在进行一些调用时,我意识到我想要读取项目B中项目A的本地/ UAT / PROD.properties文件中的值。这些文件的位置是A / src / main / resources / config。

如何在不将值作为参数从A传递给B的情况下实现此目的?

2 个答案:

答案 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添加相同的行为。