📜  Spring Boot多模块项目(1)

📅  最后修改于: 2023-12-03 15:35:03.261000             🧑  作者: Mango

Spring Boot多模块项目介绍

什么是多模块项目

多模块项目是指将一个大型的软件系统拆分成多个独立模块,每个模块负责一项独立的功能。这种模式可以使代码更加清晰、易于维护和扩展。

Spring Boot多模块项目的优势

Spring Boot多模块项目可以使开发者更加容易地将代码分层,提高代码的可读性和可维护性。同时,这种模式也减少了代码冗余,用最小的代价来实现最大的代码复用。

如何创建Spring Boot多模块项目

在创建Spring Boot多模块项目之前,我们需要了解一下什么是Maven。Maven是一款Java项目管理工具,它可以统一管理项目的构建、依赖、文档等资源。下面是创建Spring Boot多模块项目的步骤:

步骤一:创建父项目
mvn archetype:generate -DgroupId=com.example -DartifactId=parent -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

这个命令是用Maven来创建一个父项目,父项目是一个pom.xml,它不包含实际的代码,而是用于管理所有子模块共享的依赖关系。

步骤二:创建子项目
cd parent
mvn archetype:generate -DgroupId=com.example -DartifactId=child -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

这个命令是用Maven来创建一个子项目,子项目是包含实际代码的项目,它可以依赖父项目和其他子项目。

步骤三:创建模块

创建模块实际上就是重复步骤二。每个模块可以包含一个或多个子项目。我们可以用Maven的pom.xml文件来定义模块之间的依赖关系和版本控制。

Spring Boot多模块项目实现示例

下面是一个例子,在这个例子中我们将创建一个名为"spring-boot-multimodule-demo"的父项目和两个子项目"api"和"service"。"api"模块将用于接收HTTP请求并返回数据,而"service"模块将用于处理这些请求并提供业务逻辑。

创建父项目
mvn archetype:generate -DgroupId=com.example -DartifactId=spring-boot-multimodule-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
创建子项目"api"
cd spring-boot-multimodule-demo
mvn archetype:generate -DgroupId=com.example -DartifactId=api -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
创建子项目"service"
cd spring-boot-multimodule-demo
mvn archetype:generate -DgroupId=com.example -DartifactId=service -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
定义父项目的pom.xml

在父项目的pom.xml中添加以下内容:

<modules>
    <module>api</module>
    <module>service</module>
</modules>
定义子项目的pom.xml

在子项目的pom.xml中添加以下内容:

api项目

<dependencies>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>service</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

service项目

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
编写代码

api项目

在"api"项目的src/main/java/com/example/api目录中创建"Application.java"文件,用于启动Spring Boot应用程序。

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

在"api"项目的src/main/java/com/example/api/controller目录中创建"UserController.java"文件,用于接收HTTP请求并返回数据。

@RestController
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/user")
    public List<User> getUsers() {
        return userService.findAll();
    }
}

service项目

在"service"项目的src/main/java/com/example/service/domain目录中创建"User.java"文件,用于定义用户类。

@Data
@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private String email;
}

在"service"项目的src/main/java/com/example/service/repository目录中创建"UserRepository.java"文件,用于访问数据库并提供User对象的CRUD操作。

public interface UserRepository extends JpaRepository<User, Long> {
}

在"service"项目的src/main/java/com/example/service/service目录中创建"UserService.java"文件,用于提供User的业务逻辑。

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public List<User> findAll() {
        return userRepository.findAll();
    }
}
结论

Spring Boot多模块项目可以帮助开发者更加清晰地组织代码,从而提高代码的可读性和可维护性。因此,在开发大型软件项目时,我们应该考虑使用这种模式。