Projeto de múltiplos módulos com bota de mola

Projeto de múltiplos módulos com bota de mola

1. Visão geral

Neste tutorial rápido, mostraremoshow to create a multi-module project with Spring Boot.

Primeiro, vamos construir um jar de biblioteca que não é um aplicativo em si e, em seguida, vamos construir um aplicativo que usa nossa biblioteca.

Para obter uma introdução aSpring Boot, consultethis article.

2. Configuração

Para configurar nosso projeto multimódulo, vamoscreate a simple module using pom packaging to aggregate our library and application modules em nossa configuração Maven:

org.example
parent-multi-module
pom

Criaremos dois diretórios dentro de nosso projeto que dividirão o módulo do aplicativo do módulo da bibliotecajar.

Vamos declarar nossos módulos nopom.xml:


    library
    application

3. Library Jar

Para nosso módulolibrary, usaremos a embalagemjar:

com.baledung.example
library
jar

Como queremostake advantage of Spring Boot dependency management, usaremosspring-boot-starter-parent  como o projeto pai, tomando cuidado comset <relativePath/> to an empty value para que o Maven resolva ospom.xml pai dos repositórios:


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

Observe queif we have our own parent project, we can instead import the dependency management as a Bill of Materials (BOM) na seção<dependencyManagement/> depom.xml:


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

Finalmente, as dependências iniciais serão bem simples:


    
        org.springframework.boot
        spring-boot-starter
    

Neste módulo, osSpring Boot plugin isn’t necessary because the main function of it is to create an executable*über-jar*, que não queremos e não precisamos para uma biblioteca.

Depois disso, estamos prontos paradevelop 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. Projeto de Aplicação

Assim como nosso módulolibrary, nosso módulo de aplicativo usará o pacotejar:

com.example.example
application
jar

E tiraremos vantagem do gerenciamento de dependência deSpring Boot como antes:


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

Além da dependência inicial do Spring Boot, vamosinclude our library jar created in the previous section:


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

Finalmente, vamosuse the Spring Boot plugin:


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

Existem vários motivos convenientes para usar o plug-in mencionado acima neste local.

Primeiro, ele fornece um resolvedor de dependências integrado que define o número da versão para corresponder às dependências deSpring Boot.

Segundo, ele procura o método principal para sinalizar como uma classe executável.

Finalmente, e talvez o mais importante, ele coleta todos osjars emclasspathe cria um únicoüber-jar executável.

Agora que tudo está pronto para escrever nossa classe de aplicativo e ir direto ao ponto, vamosimplement 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. Conclusão

Neste artigo, exploramos como implementar e configurar um projeto multi-módulo e construir uma bibliotecajar por conta própria comSpring Boot.

Como sempre, as amostras de código podem ser encontradasover on GitHub.