Java 如何在复杂项目中包含属性文件
我有一个名为Java 如何在复杂项目中包含属性文件,java,spring,maven,Java,Spring,Maven,我有一个名为sample parent的后端项目,它由三个不同的项目组成 其中,示例Web服务是一个具有主类的Web服务后端。属性文件包含以下信息: server.port = 8080 spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=sample server.servlet.context-path=/sample 但当我运行该项目时,该文件被忽略
sample parent
的后端项目,它由三个不同的项目组成
其中,示例Web服务
是一个具有主类的Web服务<代码>后端。属性文件包含以下信息:
server.port = 8080
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=sample
server.servlet.context-path=/sample
但当我运行该项目时,该文件被忽略,因此我无法连接到mongo数据库。据我所知,我必须在
pom.xml
文件中标记backend.properties
文件,但我不知道如何做,我试图找到一些指导原则,但到目前为止我什么都没有。任何帮助都将不胜感激。将该文件放入需要连接到MongoDB的子项目的src/main/resources
。在pom.xml中指定如下资源目录
<build>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<targetPath>${project.build.outputDirectory}</targetPath>
<filtering>true</filtering>
</resource>
</resources>
</build>
${project.basedir}/src/main/resources
${project.build.outputDirectory}
真的
Michal,从我所看到的情况来看,您的问题是您试图在不需要属性值的地方加载属性值。通常,您最好将属性文件放在每个项目中,但只定义项目真正关心的值-在这里,您的webservice应用程序不关心MongoDB(或不应该关心)连接,因此您最好将连接放在MongoDB中,并从webservice中删除这些值
无论如何,如果您需要集中属性,我强烈建议您在JAR/WAR之外使用属性文件,特别是在存在密码、api密钥、连接等敏感信息的情况下。为了做到这一点,您可以使用类似于此Bean的配置(仅用于演示,不用于生产):
您还可以参考Spring文档,了解从不同来源加载属性的优先级:
从这个问题来看,它还不清楚-如何将此文件打包到build(pom.xml)中以及如何在runtimeWell中加载此文件,我不加载它,这就是问题所在,我不知道如何在main
pom.xml
文件中包含backend.properties
属性无需重新声明默认值或使用筛选,不需要或不使用的地方
public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer properties = new PropertySourcesPlaceholderConfigurer();
properties.setLocation(new FileSystemResource("/path/to/app-production.properties"));
properties.setIgnoreResourceNotFound(false);
return properties;}