当前位置: 首页 > 知识库问答 >
问题:

在Spring中合并两个模块的属性文件

薛欣荣
2023-03-14

我有一个带有多个模块的Maven项目。模块ModuleB使用ModuleA作为内部Maven依赖项。在moduleA中,我有一个加载module.a.properties文件的Springxml配置module.a.xml。在moduleB的Springxml配置中,我将module.b.properties文件与module.a.xml配置一起导入。

最后,我得到了一个带有两个属性文件导入的Spring xml配置。根据导入的顺序,我只能访问一个文件的属性:模块.a.属性或模块.b.属性。如何同时使用这两个属性?

使用< code > PropertyPlaceholderConfigurer 的解决方案的问题是,属性文件驻留在不同的模块中,moduleB不应该担心moduleA的属性文件。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" id="corePlaceHolder">
    <property name="locations">
        <list>
            <value>classpath:modula.a.properties</value>
            <value>classpath:modula.b.properties</value>
        </list>
    </property>
</bean>   

使用忽略-不可解析="true"的问题是很容易错过被遗忘的属性,并且将忽略-不可解析="true"放在属性-占位符上很容易被错过。

<context:property-placeholder location="module.a.properties" order="0" ignore-unresolvable="true"/>
<context:property-placeholder location="module.b.properties" order="1" ignore-unresolvable="true"/>

共有1个答案

文自怡
2023-03-14

不确定这是否可以解决您的问题,但是,由于您使用的是maven多模块构建,您是否考虑过使用maven插件创建第三个属性文件,作为a和B的合并,并使用适当的覆盖策略?

这是一个使用maven-merding-Properties tys-plugin的示例

<plugin>
  <groupId>org.beardedgeeks</groupId>
  <artifactId>maven-merge-properties-plugin</artifactId>
  <version>0.2</version>
  <configuration>
    <merges>
      <merge>
        <targetFile>${moduleB.output.dir}/module-final.properties</targetFile>
        <propertiesFiles>
          <propertiesFile>${moduleB.src.dir}/moduleB.properties</propertiesFile>
          <propertiesFile>${moduleA.src.dir}/moduleA.properties</propertiesFile>
        </propertiesFiles>
      </merge>
    </merges>
  </configuration>
  <executions>
    <execution>
      <phase>generate-sources</phase>
      <goals>
        <goal>merge</goal>
      </goals>
    </execution>
  </executions>
</plugin>

通过这种方式,您将在文件中获得所有A和B属性。如果A和B都存在一个属性,B将获胜(检查配置中的文件顺序)。

作为同一个项目中的两个模块,检索两个文件应该很容易。您甚至可以使用另一个插件从外部jar中解包所需的属性文件。

希望这有帮助。

 类似资料:
  • 在编程我的bukkit插件时,我意识到我需要有自己的配置文件,这样我就可以在该文件中添加注释。我还需要能够更新配置(如果它已经创建并且是旧的)。 我最近还完成了一个简单的jQuery插件,其中使用了,并合并了两个设置数组。我想知道在配置文件的java中是否可以这样做。 我的问题: 相当简单。假设这是我的默认配置。插件已经在插件文件夹中复制了这个配置(如果还没有的话)。但是,这带来了一个问题: 有一

  • 我从Rabbitmq中的队列收到了这条json消息: 然后我需要映射到这个模型类: 为此,我在@RabbitListener类中执行了此操作: 另一方面,我有一个服务类,它在customer类中为我提供customer对象,该对象需要添加到我的模型类中,并提供一个特定的id,如下所示: 最后,我的问题是如何将这个对象添加到模型类中?所以我可以在《邮递员》中看到这样的内容:

  • 问题内容: 我需要能够在运行时合并两个(非常简单的)JavaScript对象。例如,我想: 有没有人为此提供脚本或知道内置的方式来执行此操作?我不需要递归,也不需要合并函数,只需合并平面对象上的方法即可。 问题答案: ECMAScript 2018标准方法 您将使用对象传播: 现在是和的并集。中的属性将覆盖中的属性。 这也是此语法的MDN文档。如果您正在使用babel,则需要babel-plugi

  • 问题内容: 我有两个json 第一个是 第二个是 我想合并它们并有一个像 有没有办法合并它们?如果需要在JSON中更改结构,对我来说也可以 谢谢。 问题答案: 像应该工作。 官方PHP文档中的 array_merge 官方PHP文档中的 json_decode 编辑: 尝试将第二个参数添加到json_decode。这样会将对象转换为关联数组。

  • 问题内容: 我在两个单独的sqlite3数据库中有两个表。数据类型相同,但架构略有不同。我希望它们成为具有相同架构的单个数据库中的单个表 表格1 表2 在两个表之间不是唯一的。我想使用与相同的架构创建另一个表。我希望表1中的条目从0开始,然后从的条目从在的最后一个条目之后开始。 理想情况下,我想刚刚从添加条目,以和“重新索引”的主键,以便它是在同一个升序说:“日期时间”是。 更新 :现在我两个表都

  • 调用配置 我在构造函数中得到了一个NullPointerException。