【问题标题】:Spring boot multi module project with common dataSourceSpring Boot 多模块项目,通用数据源
【发布时间】:2020-11-12 05:34:08
【问题描述】:

我有一个 spring-boot 多模块项目,其中我有不同的模块,如控制器模块、服务模块和 dao 模块。 我有一个要求,比如我需要定义一个点来定义数据源,可能在 dao 层或任何其他单独的模块中,只是为了建立数据库连接。 因为不可能在 n 个控制器模块(那些 war 文件)中拥有数据源,这可能会导致多个不必要的连接。 到目前为止,它仅在我在控制器模块中定义数据源时才有效。 提前谢谢!!!!

【问题讨论】:

  • 您的问题到底是什么?您有一个多模块 spring-boot 项目,并且您希望在 dao 模块中配置数据源,而不是我理解的控制器配置(如果我错了,请纠正我),您的控制器模块是战争,dao 或服务是罐子?
  • 是的,对...我有多个不同控制器层的战争,但我不想在那里建立连接...我想在任何模块中建立连接,但只在一个地方。
  • 我的回答能解决你的问题吗?只要您在该模块中提供@Configuration (BusinessConfig.class) 和@Import 在另一个模块中提供@Configuration,您应该能够将带有数据源配置的application.properties 移动到任何模块。
  • 其实我试过没用,但我还是会再试一次,会更新你的
  • 它不工作

标签: java spring spring-boot spring-mvc spring-data-jpa


【解决方案1】:

如果您想拥有一个多模块 spring-boot 应用程序,其中有一个战争和一组 jar(我们称它们为库),您可以通过以下方式对其进行配置。

家长 pom (parent.pom):

<!--group, artifact and so on-->
<modules>
    <module>my-war</module>
    <module>my-library</module>
</modules>

war pom:使用作用域import,包pom,这样你就继承了spring-boot-dependencies的所有依赖项,从技术上讲,你可以拥有某种多父母。

<parent>
    <!--parent group id artifact and version (parent.pom)-->
</parent>
<!--group, artifact and so on-->
<packaging>war</packaging>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.3.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

jar pom 我们的库,例如 dao:

<parent>
    <!--parent group id artifact and version (parent.pom)-->
</parent>

<!--group, artifact and so on-->
<packaging>jar</packaging>

现在在你的库模块中添加application.properties 和你的datasource 连接和配置类让我们称之为BusinessConfig

@Configuration
@ComponentScan(basePackages = {"your.package"})
@EnableJpaRepositories(basePackages = {"your.package"})
@EntityScan(basePackages = {"your.package"})
public class BusinessConfig {
}

并在您的war 中导入您的BusinessConfig

@Configuration
@Import(value = {BusinessConfig.class})
public class Config {
}

【讨论】:

猜你喜欢
  • 2019-03-03
  • 2018-10-07
  • 2015-10-10
  • 1970-01-01
  • 2014-06-02
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
  • 2016-09-13
相关资源
最近更新 更多