Мультимодульный проект с Spring Boot

Мультимодульный проект с Spring Boot

1. обзор

В этом кратком руководстве мы покажемhow to create a multi-module project with Spring Boot.

Сначала мы создадим библиотеку jar, которая не является приложением, а затем создадим приложение, использующее нашу библиотеку.

Для ознакомления сSpring Boot см.this article.

2. Настроить

Чтобы настроить наш многомодульный проект, давайте используемcreate a simple module using pom packaging to aggregate our library and application modules в нашей конфигурации Maven:

org.example
parent-multi-module
pom

Мы создадим два каталога внутри нашего проекта, которые отделят модуль приложения от модуля библиотекиjar.

Давайте объявим наши модули вpom.xml:


    library
    application

3. Библиотека Jar

Для нашего модуляlibrary мы будем использовать упаковкуjar:

com.baledung.example
library
jar

Поскольку мы хотимtake advantage of Spring Boot dependency management, мы будем использоватьspring-boot-starter-parent  как родительский проект, позаботившись оset <relativePath/> to an empty value, чтобы Maven разрешил родительскийpom.xml из репозиториев:


    org.springframework.boot
    spring-boot-starter-parent
    2.0.2.RELEASE
    

Обратите внимание, чтоif we have our own parent project, we can instead import the dependency management as a Bill of Materials (BOM) в разделе<dependencyManagement/>pom.xml:


    
        
            org.springframework.boot
            spring-boot-dependencies
            pom
            2.0.2.RELEASE
            import
        
    

Наконец, начальные зависимости будут довольно простыми:


    
        org.springframework.boot
        spring-boot-starter
    

В этом модулеSpring Boot plugin isn’t necessary because the main function of it is to create an executable*über-jar*,, которые нам не нужны и не нужны для библиотеки.

После этого мы готовы кdevelop a service component that will be provided by the library:

@Service
public class EvenOddService {

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

4. Проект приложения

Как и наш модульlibrary, наш модуль приложения будет использовать упаковкуjar:

com.example.example
application
jar

И мы воспользуемся преимуществом управления зависимостямиSpring Boot, как и раньше:


    org.springframework.boot
    spring-boot-starter-parent
    2.0.2.RELEASE
    

В дополнение к начальной зависимости Spring Boot мы добавимinclude our library jar created in the previous section:


    
        org.springframework.boot
        spring-boot-starter-web
    
    
        com.example.example
        library
        ${project.version}
    

Наконец, мыuse the Spring Boot plugin:


    
        
            org.springframework.boot
            spring-boot-maven-plugin
        
    

Есть несколько удобных причин использовать плагин, упомянутый выше в этом месте.

Во-первых, он предоставляет встроенный преобразователь зависимостей, который устанавливает номер версии в соответствии с зависимостямиSpring Boot.

Во-вторых, он ищет метод main, чтобы пометить его как выполняемый класс.

Наконец, что, возможно, наиболее важно, он собирает всеjars наclasspath и строит один исполняемыйüber-jar.

Теперь, когда все готово для написания нашего класса приложения и сразу к делу, давайтеimplement a controller inside the main application class:

@SpringBootApplication(scanBasePackages = "com.example")
@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. Заключение

В этой статье мы изучили, как реализовать и настроить многомодульный проект и создать собственную библиотекуjar с помощьюSpring Boot.

Как всегда, образцы кода можно найтиover on GitHub.