[JAVA] Mettre plusieurs classes principales dans un seul projet Spring

Aperçu

Si votre projet comporte plusieurs lots, vous avez la possibilité de placer plusieurs lots dans un projet, de les diviser en plusieurs projets, etc. Dans cet article, j'ai essayé l'ancienne approche consistant à placer plusieurs lots dans un projet et à séparer les classes principales.

supposition

>gradle -v

------------------------------------------------------------
Gradle 6.5
------------------------------------------------------------

Build time:   2020-06-02 20:46:21 UTC
Revision:     a27f41e4ae5e8a41ab9b19f8dd6d86d7b384dad4

Kotlin:       1.3.72
Groovy:       2.5.11
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          11.0.2 (Oracle Corporation 11.0.2+9)
OS:           Windows 10 10.0 amd64

STS 3.9.9.RELEASE (Je dois en faire un système bâclé 4 ...)

Structure du projet

multiple-main └src/main/java  └com/example/dem   ├MultipleApplication.java   └MultipleApplication2.java

Comment appeler la classe principale

Pour STS

Lorsque vous essayez d'exécuter Spring Application, l'écran de sélection de la classe Main apparaîtra comme indiqué dans la figure ci-dessous, alors sélectionnez celle que vous souhaitez exécuter. スクリーンショット 2020-11-03 094542.png

Pour Gradle

Après avoir chargé le plug-in d'application, spécifiez le fichier mainClass. Ce n'est pas pratique car vous devez réécrire build.gradle un par un. (Lien de référence 1)

plugins {
	id 'org.springframework.boot' version '2.3.5.RELEASE'
	id 'io.spring.dependency-management' version '1.0.10.RELEASE'
	id 'java'
	id 'application'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
mainClassName = "com.example.demo.MultipleMainApplication2"

repositories {
	mavenCentral()
}

Pour l'exécution en pot

java -cp multiple-main-0.0.1-SNAPSHOT.jar -Dloader.main=com.example.demo.MultipleMainApplication org.springframework.boot.loader.PropertiesLauncher

(Lien de référence 2)

PropertiesLauncher est qui? Cependant, même si la mainClass de build.gradle est MultipleMainApplication2, j'ai pu démarrer MultipleMainApplication (non marqué).

Sommaire

Ce n'est pas impossible, mais j'ai trouvé que c'était gênant. Avec la classe Main, il est difficile de gérer les beans sous Spring management (ce n'est pas impossible à gérer), donc si vous souhaitez mettre plusieurs processus dans un même projet, je pense qu'il vaut mieux changer Runner en se référant à l'article suivant. (Cette méthode a également été adoptée sur le terrain).

Placez plusieurs classes d'implémentation CommandLineRunner / ApplicationRunner dans le fichier exécutable de Spring Boot et changez la classe à exécuter par les propriétés au démarrage --Qiita

Lien de référence

  1. Chapitre 45 Plugins d'application
  2. Spring Boot: Paramètres de la classe principale
  3. Placez plusieurs classes d'implémentation CommandLineRunner / ApplicationRunner dans le fichier exécutable de Spring Boot et changez la classe à exécuter par les propriétés au démarrage --Qiita

Recommended Posts

Mettre plusieurs classes principales dans un seul projet Spring
Créer un projet Java Spring Boot avec IntelliJ
Exécuter un projet Spring Boot avec VS Code
Conseils Java - Créez un projet Spring Boot avec Gradle
Comment définir plusieurs orm.xml dans Spring4, JPA2.1
Afficher la tâche Gradle dans le projet Spring Boot
Obtenez plusieurs ressources qui correspondent au modèle au printemps
Comment créer un projet Spring Boot dans IntelliJ
Essayez gRPC dans le projet Spring Boot et Spring Cloud (Mac OS)