专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 使用SpringBoot多模块项目

使用SpringBoot多模块项目

更新时间:2021-12-29 10:50:29 来源:动力节点 浏览1754次

1.概述

在本快速教程中,我们将展示 如何使用Spring Boot创建多模块项目。

首先,我们将构建一个不是应用程序本身的库 jar,然后我们将构建一个使用我们的库的应用程序。

2.设置

要设置我们的多模块项目,让我们 使用pom 打包 创建一个简单的模块, 以 在我们的 Maven 配置中聚合我们的库和应用程序模块:

<groupId>com.baeldung</groupId>
<artifactId>parent-multi-module</artifactId>
<packaging>pom</packaging>

我们将在我们的项目中创建两个目录,将应用程序模块与库jar模块分开。

让我们在pom.xml 中声明我们的模块:

<modules>
    <module>library</module>
    <module>application</module>
</modules>

3.库模块

对于我们的库模块,我们将使用jar包装:

<groupId>com.baledung.example</groupId>
<artifactId>library</artifactId>
<packaging>jar</packaging>

由于我们想利用Spring Boot依赖管理,我们将使用 spring-boot-starter-parent 作为父项目,注意将<relativePath/> 设置为空值,以便 Maven 将解析父pom。来自存储库的xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.6.RELEASE</version>
    <relativePath/>
</parent>

请注意,如果我们有自己的父项目,我们可以在pom.xml 的<dependencyManagement/>部分将依赖项管理作为物料清单 (BOM) 导入:

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

最后,初始依赖项将非常简单:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter</artifactId>
    </dependency>
</dependencies>

在这个模块中, Spring Boot插件不是必需的,因为它的主要功能是创建一个可执行文件über-jar,我们不需要也不需要库。

之后,我们准备开发将由库提供的服务组件:

@Service
public class EvenOddService {
    public String isEvenOrOdd(Integer number) {
        return number % 2 == 0 ? "Even" : "Odd";
    }
}

4.申请项目

与我们的库模块一样,我们的应用程序模块将使用 jar包装:

<groupId>com.baeldung.example</groupId>
<artifactId>application</artifactId>
<packaging>jar</packaging>

我们将像以前一样利用Spring Boot依赖管理:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.6.RELEASE</version>
    <relativePath/>
</parent>

除了 Spring Boot starter 依赖项之外,我们还将包含在上一节中创建的库jar:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.baeldung.example</groupId>
        <artifactId>library</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

最后,我们将使用Spring Boot插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

在这个地方使用上面提到的插件有几个方便的原因。

首先,它提供了一个内置的依赖解析器,用于设置版本号以匹配Spring Boot依赖。

其次,它搜索 main 方法以将其标记为可运行的类。

最后,也许是最重要的,它收集类路径上的所有jar并构建一个单一的、可运行的 über-jar。

现在一切都准备好编写我们的应用程序类并直接进入正题,让我们在主应用程序类中实现一个控制器:

@SpringBootApplication(scanBasePackages = "com.baeldung")
@RestController
public class EvenOddApplication {
    private EvenOddService evenOddService;
    // constructor
    @GetMapping("/validate/")
    public String isEvenOrOdd(
      @RequestParam("number") Integer number) {
        return evenOddService.isEvenOrOdd(number);
    }
    public static void main(String[] args) {
        SpringApplication.run(EvenOddApplication.class, args);
    }
}

5.结论

在本文中,我们探索了如何使用Spring Boot实现和配置一个多模块项目并自行构建库jar。

与往常一样,可以在 GitHub 上找到代码示例。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>