본문 바로가기
스프링 부트3

스프링 부트 3에서 Custom Starter 작성하기

by 굿센스굿 2024. 12. 11.
반응형

 

스프링 부트(Spring Boot)는 마이크로서비스 아키텍처를 손쉽게 구현할 수 있도록 도와주는 강력한 프레임워크입니다. 특히, 스프링 부트의 스타터(Starter) 기능은 여러 의존성을 간편하게 묶어 제공함으로써 프로젝트 설정을 크게 단순화합니다. 하지만 프로젝트가 커지다 보면, 공통으로 사용되는 기능들을 별도의 스타터로 분리하고 싶은 경우가 생깁니다. 이번 글에서는 스프링 부트 3에서 커스텀 스타터(Custom Starter)를 작성하는 방법에 대해 상세히 알아보겠습니다.

Custom Starter의 필요성

커스텀 스타터는 여러 프로젝트에서 공통으로 사용되는 설정이나 의존성을 하나의 모듈로 묶어 재사용성을 높이고, 프로젝트 설정을 단순화할 수 있는 장점이 있습니다. 예를 들어, 여러 프로젝트에서 공통으로 사용하는 보안 설정이나 로깅 설정을 하나의 스타터로 만들어 배포하면, 각 프로젝트에서 이를 손쉽게 사용할 수 있습니다.

Custom Starter 작성 단계

커스텀 스타터를 작성하는 과정은 크게 다음과 같은 단계로 나눌 수 있습니다:

  1. 새로운 Maven 프로젝트 생성
  2. 필요한 의존성 추가
  3. 자동 구성 클래스 작성
  4. 테스트 및 배포

각 단계를 하나씩 살펴보겠습니다.

1. 새로운 Maven 프로젝트 생성

먼저, 새로운 Maven 프로젝트를 생성합니다. 이 프로젝트는 커스텀 스타터로서의 역할을 할 것입니다. IntelliJ IDEA를 사용한다면, 다음과 같은 절차로 진행할 수 있습니다:

  1. File > New > Project를 선택합니다.
  2. Maven 프로젝트를 선택한 후, GroupId와 ArtifactId를 입력합니다.
  3. 패키지 구조를 설정하고 프로젝트를 생성합니다.

예시:

<groupId>com.example</groupId>
<artifactId>custom-starter</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

2. 필요한 의존성 추가

pom.xml 파일에 스프링 부트 의존성과 필요한 추가 의존성을 추가합니다. 기본적으로 spring-boot-starter와 spring-boot-autoconfigure 의존성이 필요합니다.

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
    </dependency>
</dependencies>

3. 자동 구성 클래스 작성

자동 구성 클래스(Autoconfiguration Class)는 스프링 부트 애플리케이션이 기동될 때 자동으로 설정을 적용하는 역할을 합니다. 이를 위해 @Configuration과 @ConditionalOnClass 등의 어노테이션을 사용합니다.

예시로, 간단한 메시지 서비스를 자동으로 구성하는 커스텀 스타터를 작성해보겠습니다.

3.1 서비스 클래스 작성

package com.example.customstarter.service;

public class CustomService {
    public String getMessage() {
        return "Hello from Custom Starter!";
    }
}

3.2 자동 구성 클래스 작성

package com.example.customstarter.autoconfigure;

import com.example.customstarter.service.CustomService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CustomServiceAutoConfiguration {

    @Bean
    public CustomService customService() {
        return new CustomService();
    }
}

3.3 META-INF/spring.factories 파일 생성

src/main/resources/META-INF/spring.factories 파일을 생성하고 자동 구성 클래스를 등록합니다.

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.example.customstarter.autoconfigure.CustomServiceAutoConfiguration

4. 테스트 및 배포

작성한 커스텀 스타터가 정상적으로 동작하는지 확인하기 위해 테스트 프로젝트를 생성합니다.

4.1 테스트 프로젝트 생성

새로운 스프링 부트 애플리케이션 프로젝트를 생성하고, pom.xml 파일에 커스텀 스타터 의존성을 추가합니다.

<dependency>
    <groupId>com.example</groupId>
    <artifactId>custom-starter</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

4.2 애플리케이션 클래스 작성

package com.example.demo;

import com.example.customstarter.service.CustomService;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Bean
    public CommandLineRunner run(CustomService customService) {
        return args -> {
            System.out.println(customService.getMessage());
        };
    }
}

애플리케이션을 실행하면 CustomService에서 반환하는 메시지가 출력됩니다. 이를 통해 커스텀 스타터가 정상적으로 동작함을 확인할 수 있습니다.

결론

스프링 부트 3에서 커스텀 스타터를 작성하는 방법을 단계별로 살펴보았습니다. 커스텀 스타터는 공통 기능을 모듈화하고, 여러 프로젝트에서 재사용성을 높일 수 있는 강력한 도구입니다. 이를 통해 프로젝트의 복잡성을 줄이고, 개발 생산성을 향상시킬 수 있습니다. 커스텀 스타터를 작성하여 더 나은 스프링 부트 애플리케이션을 개발해 보시기 바랍니다.

반응형