스프링 부트(핵심 원리와 활용)

Ch04. 자동 구성(Auto Configuration) - 자동 구성 라이브러리 사용하기(1)

webmaster 2023. 3. 10. 01:24
728x90

project-v2 구성하기

build.gradle

plugins {
    id 'org.springframework.boot' version '3.0.2'
    id 'io.spring.dependency-management' version '1.1.0'
    id 'java'
}

group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
    useJUnitPlatform()
}
  • 스프링 부트에서 다음 라이브러리를 선택했다.
    • Lombok
    • Spring Web

HelloController

@RestController
public class HelloController {
  @GetMapping("/hello")
  public String hello(){
    return "hello";
  }

}

자동 구성 라이브러리 사용하기

  1. libs 폴더를 생성
  2. memory-v2 프로젝트에서 빌드한 memory-v2.jar 를 이곳에 복사
  3. project-v2/build.gradle memory-v2.jar 를 추가

build.gradle

dependencies {
    implementation files('libs/memory-v2.jar')
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
  • 라이브러리를 파일로 직접 가지고 있으면 files 로 지정하면 된다.
  • gradle을 리로드하자.

라이브러리 설정

VM option
  • 앞서 project-v1 에서는 memory-v1 을 사용하기 위해 스프링 빈을 직접 등록했다.
  • project-v2 에서 사용하는 memory-v2 라이브러리에는 스프링 부트 자동 구성이 적용되어 있다. 따라서 빈을 등록하는 별도의 설정을 하지 않아도 된다.
    • -Dmemory=on 옵션만 주게 되면 자동 설정이 적용되는것을 확인할 수 있다.
    • -Dmemory=on 조건을 끄면 라이브러리를 사용하지 않는 것도 확인할 수 있다.

정리

  • 스프링 부트가 제공하는 자동 구성 덕분에 복잡한 빈 등록이나 추가 설정 없이 단순하게 라이브러리의 추가만으로 프로젝트를 편리하게 구성할 수 있다.
  • @ConditionalOnXxx 덕분에 라이브러리 설정을 유연하게 제공할 수 있다.
  • 스프링 부트는 수 많은 자동 구성을 제공한다. 그 덕분에 스프링 라이브러리를 포함해서 수 많은 라이브러리를 편리하게 사용할 수 있다

 

728x90