Spring

스프링 라이브러리 만들기 @AutoConfiguration

백엔드 유성 2023. 3. 24. 22:44

스프링에서 사용할 수 있는 라이브러리를 만들어보자

 

대학 시절, 저는 개인적인 프로젝트로 라이브러리를 만들고자 했습니다. 이 과정에서 여러 블로그를 참조하며 시행착오를 겪었고, 그 경험은 저에게 많은 것을 가르쳐 주었습니다. 이번 글에서는 그때의 경험을 바탕으로, 라이브러리 생성을 쉽고 자세하게 이해할 수 있도록 안내해드리려 합니다. 그러므로 이번 글은 조금 더 자세하게 작성하였습니다.

 

본론으로..

Spring Boot의 @AutoConfiguration을 이용한 라이브러리 제작 방법에 대해 알아보겠습니다.

글의 순서는 다음과 같습니다.

  1. 프로젝트 생성 및 AutoConfiguration 라이브러리 추가
  2. 메인 코드 작성
  3. @AutoConfiguration 추가
  4. Spring이 읽을 수 있는 설정 파일 생성
  5. 라이브러리 빌드
  6. 라이브러리 사용

 

1. 프로젝트 생성 및 AutoConfiguration 라이브러리 추가

첫 단계로, Gradle 프로젝트를 생성합니다. 그 후에 필요한 종속성(dependencies)을 추가하겠습니다. 프로젝트 디렉토리에 있는 'build.gradle' 파일에 다음 코드를 추가하고, IDE 내에서 'gradle refresh'를 실행해주세요.

dependencies {
    // AutoConfiguration 라이브러리
    implementation 'org.springframework.boot:spring-boot-autoconfigure:3.1.2'
    ...
}

'gradle refresh' 버튼을 찾지 못한 경우, 프로젝트 경로로 터미널에 들어가서 다음 명령어를 입력하면 됩니다.

$ gradle --refresh-dependencies

 

원하는 dependency 검색 방법 -> {{ 링크 추가 예정 }}

 

2. 메인 코드 작성

이제 라이브러리의 메인 코드를 작성해볼 차례입니다. 라이브러리의 이름은 'FuBao'로 정하였고, 'mom' 메서드를 호출하면 '아이바오'라는 문자열이 콘솔에 출력됩니다.

package study;

public class FuBao {

    public void mom() {
        System.out.println("아이바오");
    }
}

 

이 시점에서 기본적인 로직 작성은 완료되었습니다. 이미 이 코드는 라이브러리로 사용할 수 있을 만큼 충분하지만, 사용자가 'FuBao' 클래스를 등록하는 데 어려움을 겪을 수도 있습니다.

 

3. @AutoConfiguration 추가

따라서, 사용자의 편의를 위해 @AutoConfiguration을 추가하겠습니다. 이를 위해 'FuBaoAutoConfig'라는 새로운 클래스를 생성합니다. 클래스의 이름은 본인이 원하는대로 변경하셔도 무방합니다.

 

이 클래스에는 @AutoConfiguration 어노테이션을 추가하고, Spring Bean을 위한 @Bean 어노테이션을 사용하여 'FuBao' 인스턴스를 주입합니다. 이를 통해 'FuBao' 클래스는 자동으로 구성됩니다.

package study;

import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.Bean;

@AutoConfiguration
public class FuBaoAutoConfig {

    @Bean
    public FuBao fuBao() {
        return new FuBao();
    }
}

 

이로써 모든 것이 거의 완성되었습니다. 마지막 단계만 남았습니다.

 

4. Spring이 읽을 수 있는 설정 파일 생성

Spring이 우리가 작성한 @AutoConfiguration을 읽을 수 있게 설정 파일을 작성해야 합니다. 'resources' 디렉토리 아래에 다음과 같은 디렉토리와 파일을 생성합니다:

resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

(주의: "org.springframework.boot.autoconfigure.AutoConfiguration.imports"는 파일 이름입니다.)

 

이 파일에는 우리가 생성한 'FuBaoAutoConfig' 클래스의 위치를 추가합니다. 예를 들어, config 파일이 'fubao/src/main/java/study/FuBaoAutoConfig.java' 경로에 위치해 있다면, 다음과 같이 작성합니다:

study.FuBaoAutoConfig

 

5. 라이브러리 빌드

마지막으로 FuBao라는 라이브러리를 사용하기 위해서 현재 프로젝트를 build해줍니다.

$ ./gradlew clean build

 

빌드가 성공하면 fubao/build/libs 디렉토리 안에

fubao-1.0-SNAPSHOT.jar 라는 파일이 생성되었습니다.

 

6. 라이브러리 사용

이제 이 'fubao-1.0-SNAPSHOT.jar' 파일을 외부 Spring 프로젝트에 추가하면 'FuBao' 라이브러리를 사용할 수 있습니다. 

외부 라이브러리 사용 방법 -> {{ 링크 추가 예정 }}