하나의 Spring Project 내에 여러 개의 Main 클래스를 넣습니다.
3878 단어 자바spring-boot
개요
프로젝트에 여러 일괄 처리가 있는 경우 하나의 프로젝트에 여러 일괄 처리를 넣거나 여러 프로젝트로 나누는 등의 옵션이 있습니다.
이 기사에서는 전자의 한 프로젝트에 여러 배치를 넣는 방법으로 Main 클래스를 분리하는 방법을 시도했습니다.
전제
>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(좋은 가감 4계로 하지 않으면···)
프로젝트 구성
multiple-main
└src/main/java
└com/example/dem
├MultipleApplication.java
└MultipleApplication2.java
Main 클래스의 호칭 방법
STS의 경우
Spring Application을 실행하려고하면 아래 그림과 같이 Main 클래스를 선택하는 화면이 나오므로 실행하고 싶은 분을 선택한다.
Gradle의 경우
application 플러그인을 읽은 후 mainClass를 지정합니다.
일일이 build.gradle를 다시 써야 하기 때문에 불편하네요.
(참고 링크 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()
}
jar 실행의 경우
java -cp multiple-main-0.0.1-SNAPSHOT.jar -Dloader.main=com.example.demo.MultipleMainApplication org.springframework.boot.loader.PropertiesLauncher
(참고 링크 2)
PropertiesLauncher is 누구? 라는 느낌입니다만, build.gradle의 mainClass가 MultipleMainApplication2의 상태에서도, MultipleMainApplication(무인)쪽을 기동할 수 있었습니다.
요약
일단 할 수 없어도 없지만, 근악한 생각이 들었습니다.
Main 클래스라면 Spring 관리하의 Bean을 다루기 어려워(취급할 수 없는 것은 아니다) 때문에, 1개의 프로젝트에 복수의 처리를 넣는다면, 아래의 기사를 참고로 Runner를 전환하는 방법이 좋다고 생각합니다 (현장에서도 이 방법을 채용했다).
Spring Boot의 실행 가능 jar에 복수의 CommandLineRunner/ApplicationRunner 구현 클래스를 넣어, 기동시의 프로퍼티로 실행하는 클래스를 전환한다 - Qiita
참고 링크
>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(좋은 가감 4계로 하지 않으면···)
프로젝트 구성
multiple-main
└src/main/java
└com/example/dem
├MultipleApplication.java
└MultipleApplication2.java
Main 클래스의 호칭 방법
STS의 경우
Spring Application을 실행하려고하면 아래 그림과 같이 Main 클래스를 선택하는 화면이 나오므로 실행하고 싶은 분을 선택한다.
Gradle의 경우
application 플러그인을 읽은 후 mainClass를 지정합니다.
일일이 build.gradle를 다시 써야 하기 때문에 불편하네요.
(참고 링크 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()
}
jar 실행의 경우
java -cp multiple-main-0.0.1-SNAPSHOT.jar -Dloader.main=com.example.demo.MultipleMainApplication org.springframework.boot.loader.PropertiesLauncher
(참고 링크 2)
PropertiesLauncher is 누구? 라는 느낌입니다만, build.gradle의 mainClass가 MultipleMainApplication2의 상태에서도, MultipleMainApplication(무인)쪽을 기동할 수 있었습니다.
요약
일단 할 수 없어도 없지만, 근악한 생각이 들었습니다.
Main 클래스라면 Spring 관리하의 Bean을 다루기 어려워(취급할 수 없는 것은 아니다) 때문에, 1개의 프로젝트에 복수의 처리를 넣는다면, 아래의 기사를 참고로 Runner를 전환하는 방법이 좋다고 생각합니다 (현장에서도 이 방법을 채용했다).
Spring Boot의 실행 가능 jar에 복수의 CommandLineRunner/ApplicationRunner 구현 클래스를 넣어, 기동시의 프로퍼티로 실행하는 클래스를 전환한다 - Qiita
참고 링크
STS의 경우
Spring Application을 실행하려고하면 아래 그림과 같이 Main 클래스를 선택하는 화면이 나오므로 실행하고 싶은 분을 선택한다.
Gradle의 경우
application 플러그인을 읽은 후 mainClass를 지정합니다.
일일이 build.gradle를 다시 써야 하기 때문에 불편하네요.
(참고 링크 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()
}
jar 실행의 경우
java -cp multiple-main-0.0.1-SNAPSHOT.jar -Dloader.main=com.example.demo.MultipleMainApplication org.springframework.boot.loader.PropertiesLauncher
(참고 링크 2)
PropertiesLauncher is 누구? 라는 느낌입니다만, build.gradle의 mainClass가 MultipleMainApplication2의 상태에서도, MultipleMainApplication(무인)쪽을 기동할 수 있었습니다.
요약
일단 할 수 없어도 없지만, 근악한 생각이 들었습니다.
Main 클래스라면 Spring 관리하의 Bean을 다루기 어려워(취급할 수 없는 것은 아니다) 때문에, 1개의 프로젝트에 복수의 처리를 넣는다면, 아래의 기사를 참고로 Runner를 전환하는 방법이 좋다고 생각합니다 (현장에서도 이 방법을 채용했다).
Spring Boot의 실행 가능 jar에 복수의 CommandLineRunner/ApplicationRunner 구현 클래스를 넣어, 기동시의 프로퍼티로 실행하는 클래스를 전환한다 - Qiita
참고 링크
Reference
이 문제에 관하여(하나의 Spring Project 내에 여러 개의 Main 클래스를 넣습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/taka_22/items/59c5c77f0748e71f823e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)