728x90
project-v1 기본 설정하기
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";
}
}
- 여기는 helloController 하나만 있지만, 대규모 시스템이라고 생각해 보자
순수 라이브러리 사용하기
앞서 만든 memory-v1.jar 라이브러리를 project-v1에 적용해 보자..
라이브러리 추가
- libs 폴더를 생성하자
- memory-v1 프로젝트에서 빌드한 memory-v1.jar 를 이곳에 복사
- project-v1/build.gradle 에 memory-v1.jar 를 추가
dependencies {
implementation files('libs/memory-v1.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'
}
- 라이브러리를 jar 파일로 직접 가지고 있으면 files 로 지정하면 된다.
라이브러리 설정
MemoryConfig
@Configuration
public class MemoryConfig {
@Bean
public MemoryFinder memoryFinder(){
return new MemoryFinder();
}
@Bean
public MemoryController memoryController(){
return new MemoryController(memoryFinder());
}
}
- 스프링 부트 자동 구성을 사용하는 것이 아니기 때문에 빈을 직접 하나하나 등록해주어야 한다.
문제점
- 외부 라이브러리를 직접 만들고 또 그것을 프로젝트에 라이브러리로 불러서 적용해보았다.
- 그런데 라이브러리를 사용하는 클라이언트 개발자 입장을 생각해보면, 라이브러리 내부에 있는 어떤 빈을 등록해야하는지 알아야 하고, 그것을 또 하나하나 빈으로 등록해야 한다. 지금처럼 간단한 라이브러리가 아니라 초기 설정이 복잡하다면 사용자 입장에서는 상당히 귀찮은 작업이 될 수 있다.
- 이런 부분을 자동으로 처리해주는 것이 바로 스프링 부트 자동 구성(Auto Configuration)이다
728x90
'스프링 부트(핵심 원리와 활용)' 카테고리의 다른 글
| Ch04. 자동 구성(Auto Configuration) - 자동 구성 라이브러리 사용하기(1) (0) | 2023.03.10 |
|---|---|
| Ch04. 자동 구성(Auto Configuration) - 자동 구성 라이브러리 만들기 (0) | 2023.03.10 |
| Ch04. 자동 구성(Auto Configuration) - 순수 라이브러리 만들기 (0) | 2023.03.10 |
| Ch04. 자동 구성(Auto Configuration) - @Conditional (0) | 2023.03.09 |
| Ch04. 자동 구성(Auto Configuration) - 자동 구성 직접 만들기(기반 예제) (0) | 2023.03.09 |