1. Spring Initializr를 통해 Spring Boot
프로젝트를 하나 만듭니다.
( gradle-groovy
기반으로 만들어주세요 )
2. 해당 프로젝트를 Intellij IDE
로 열고,
최상위 디렉토리의 src
디렉토리는 사용 안하므로 삭제합니다.
3. 최상위 디렉토리에 하위 모듈로 사용할 디렉토리를 생성합니다.
저는 producer
, consumer
라는 디렉토리 2개를 만들었습니다.
4. 최상위 디렉토리에 있는 build.gradle
파일을 열어 봅니다.
아마 처음에는 아래처럼 생겼을 겁니다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.5.4'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'coding.toast'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
위처럼 생긴 파일의 내용을 아래와 같이 수정해줍니다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.5.4'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'coding.toast'
version = '0.0.1-SNAPSHOT'
allprojects {
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
}
보면 알겠지만
allprojects
라는 걸 하나 만들고 그 하위에 모든 내용을 집어 넣은 후,
apply plugin
을 사용해서 최상위에 작성된plugin
들을 하나하나 적용한 것을
확인할 수 있습니다.
6. 이후에 최상위 디렉토리에 있는 settings.gradle
파일을 수정하는데,
앞서 3번에서 여러분들이 생성한 모듈로 사용할 디렉토리리 명칭을 include 를 통해서
적용해줘야 합니다. 저는 consumer, producer 2개의 디렉토리를 생성했으므로 아래와 같이 수정합니다.
rootProject.name = 'root'
include 'consumer'
include 'producer'
rootProject.name
은 건들지 마세요! 여러분들이랑 저랑 다를 수 있습니다!
include
만 여러분들이 생성한 디렉토리명을 잘 지정해주세요.
7. 최상위 디렉토리 하부에 생성한 각각의
디렉토리(consumer, producer 디렉토리)에 들어가서 build.gradle
파일을 생성합니다.
그리고 내용을 아래와 같이 내용을 작성하여 dependency 하나를 추가해줬습니다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
8. 이쯤에서 최상위 디렉토리에 있는 build.gradle 파일을 열고,
오른쪽 상단에 있는 코끼리 버튼(Sync Gradle Changes) 버튼을 클릭해줍니다.
결과적으로 하위 모듈 디렉토리는 아래와 같은 디렉토리 구조가 됩니다.
src/main/java
하위에 여러분들의 패키지를 생성합니다.여기서 패키지명을 지정할 때는 웬만하면 최상위 디렉토리에 있는
build.gradle
파일
에 있는 group 명칭(저의 경우에는group = 'coding.toast'
)을 사용해서
패키지명을 지정해주시기 바랍니다. 이래야 통일성이 생긴답니다.
10. 마지막으로 생성한 패키지 하위에 SpringApplication
클래스를 하나 생성하고,
가볍게 테스트만 해보겠습니다. 에러 없이 실행됐다면 잘 된겁니다.
package 여러분들의.패키지.명;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@SpringBootApplication
public class SampleApplication {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(SampleApplication.class);
// Set properties programmatically
Map<String, Object> props = new HashMap<>();
props.put("server.port", 0); // 랜덤 포트 사용
app.setDefaultProperties(props);
ConfigurableApplicationContext context = app.run(args);
}
}
@RestController
class SampleController {
@GetMapping("/hello")
public Map<String,String> some() {
return Map.of("hello", "world");
}
}