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

Maven Multi Module坚持在业务模块中复制数据源Application.Properties

程和畅
2023-03-14

我有spring boot maven java多模块结构。我的结构是:

product (parent pom module)
..product-data (child pom module)
..product-business (has dependency for product-data) 
..product-rest (has dependency for product-business) 
..product-entities (child pom module)

product-data将实体对象返回到product-business,product-business将实体对象返回到product-rest,product-rest返回json对象。

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.owner</groupId>
    <artifactId>product</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <nopeasti.version>1.0.0-SNAPSHOT</nopeasti.version>
    </properties>

    <dependencies>

    </dependencies>

    <modules>
        <module>product-data</module>
        <module>product-business</module>
        <module>product-rest</module>
        <module>product-entities</module>
    </modules>
</project>
<project>
    <artifactId>product-data</artifactId>
    <packaging>jar</packaging>
    <parent>
        <groupId>com.owner</groupId>
        <artifactId>product</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <dependencyManagement>
         <dependencies>
            <dependency>
                <!-- Import dependency management from Spring Boot -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.5.8.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.0.0.M6</version>
            </plugin>
        </plugins>
    </build>
</project>

产品-业务POM

<project>
    <artifactId>product-business</artifactId>
    <packaging>jar</packaging>
    <parent>
        <groupId>com.owner</groupId>
        <artifactId>product</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <dependencyManagement>
         <dependencies>
            <dependency>
                <!-- Import dependency management from Spring Boot -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.5.8.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.owner</groupId>
            <artifactId>product-data</artifactId>
            <scope>compile</scope>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.0.0.M6</version>
            </plugin>
        </plugins>
    </build>
</project>

共有1个答案

洪飞白
2023-03-14

据此,

不建议将application.properties放在库中,因为使用它的应用程序在运行时可能会发生冲突(只从类路径加载一个application.properties)

为了解决这个问题并保持解耦的体系结构,我在product-data模块的resources文件夹下创建了另一个文件data.properties,并在配置文件中指定了@PropertySource注释。下面是product-data模块的配置文件。Spring.DataSource属性是在该文件中定义的。然后在其他2个模块中就不需要Spring.DataSource属性了。

@ComponentScan
@EnableAutoConfiguration
@SpringBootConfiguration
@PropertySource(value = "data.properties")
public class NopeastiDataConfig {
    // no main needed here as this is library consumed by business layer
}

请进一步阅读:外部化配置

 类似资料:
  • 在我的java应用程序中,我只是想知道是否可以将src/main/resources下的资源文件从maven子模块复制或直接使用到主maven模块(该子模块作为依赖项)src/main/resource文件夹中,因此我不需要再次手动将所有资源文件复制到我的工作区中。

  • 问题内容: 我想在数据库中复制实体集合。我使用以下方法检索该集合: 现在,我想复制“类别”列表,并使用EntityManager保留它。我正在使用JPA /hibernate。 更新 在知道如何分离我的实体之后,我需要知道要分离什么:当前代码: 这引发了异常。 我认为他想重新加载类别,因为我已经将它们分离了。我现在该怎么办? 问题答案: 亚伦·迪吉拉(AaronDiguila)的答案是去这里的方式

  • 问题内容: 我的复制任务设置如下: 而且我收到以下错误: 我觉得这只是一个语法问题,有什么提示吗? 问题答案: 按组排除: 按模块排除: 按文件名排除: 排除文件: 您可以按组和模块排除,但需要进入这样的配置排除。 然后它将限制复制之前的配置。 并记住确保该目录存在 也许不是排除所有其他文件而是添加jar?

  • blue-highlight.directive.ts yellow-highlight.directive.ts app.module.ts 让我们看看我们如何在模块的唯一组件中使用它。 app.component.ts 我们允许将多个指令用在同一模块中的相同元素上。Angular将按顺序进行每个转换每个指令。 因为我们已经在数组中定义了两个指令,并且数组是有序集合的项,当编译器找到具有属性的元

  • 问题内容: 我有一个工作循环来为一些工作数据点设置标题和字幕元素的注释。我想要在相同的循环结构中执行的操作是将图钉颜色设置为“紫色”,而不是默认值。我不知道要怎么做才能进入我的MapView来相应地设置图钉。 我的工作循环和某些尝试… 问题答案: 您需要实现委托方法并从那里返回一个(或子类)。 就像在Objective-C中一样-基础SDK的工作方式相同。 从添加注释的循环中删除创建的内容,并改为

  • 在node的上下文中,我无法理解ES6模块。js。 假设我有一个简单的节点应用程序。它基于iisnode示例,但我在顶部添加了一个。 你好js: 这将导致在模块之外使用导入语句 但是如果我改名为hello。你好。mjs我收到以下错误: 对我来说似乎是个陷阱,有什么出路? (iisnode版本为0.2.26,节点版本为v13.8.0)