본문 바로가기
Spring

Spring Boot Auto Configuration 작동 원리

by 긍고 2024. 9. 28.
728x90
반응형

개요


개발을 하다 보면 Spring Boot를 사용할 때 대부분의 설정이 자동으로 되어 있어 편리하다는 점을 경험하게 된다. 하지만 "어떻게 이런 설정들이 자동으로 이루어질까?🙄"라는 궁금증을 해결하기 위해 Spring Boot의 Auto Configuration을 깊이 있게 이해하게 되었다. 이 글을 통해 Spring Boot의 Auto Configuration이 어떻게 작동하는지, 그리고 이를 활용하여 개발을 더욱 효율적으로 할 수 있는 방법을 알아보려고 한다.

 

Auto Configuration이란?


Spring Boot의 Auto Configuration은 애플리케이션이 필요한 설정을 자동으로 적용해주는 기능이다. 덕분에 개발자는 모든 설정을 수동으로 지정할 필요 없이, 최소한의 설정만으로도 애플리케이션을 구동할 수 있다. 예를 들어, 데이터베이스 관련 설정이나 웹 서버 설정 등 흔히 사용하는 기능들은 Auto Configuration을 통해 자동으로 설정된다.

 

Spring Boot는 클래스패스에 있는 라이브러리들을 분석하여 필요한 Bean을 자동으로 생성한다. 즉, 특정 라이브러리가 프로젝트에 포함되어 있으면, 해당 라이브러리와 관련된 설정이 자동으로 이루어진다.

 

Auto Configuration의 동작 원리


Auto Configuration은 내부적으로 @EnableAutoConfiguration 어노테이션과 META-INF/spring.factories 파일을 통해 동작한다. Spring Boot가 실행되면 spring.factories 파일을 읽고, 여기에 나열된 설정 클래스들을 자동으로 로드하게 된다. 이를 통해 필요한 Bean들이 자동으로 등록된다.

 

다음은 spring.factories 파일의 일부 예시이다:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration

 

위 설정을 보면, 데이터베이스 연결을 위한 DataSourceAutoConfiguration웹 애플리케이션을 위한 WebMvcAutoConfiguration이 자동으로 설정되는 것을 알 수 있다. Spring Boot는 이러한 설정들을 기반으로 애플리케이션을 구동하는데 필요한 Bean들을 자동으로 구성해준다.

 

커스텀 Auto Configuration 적용 예시


Auto Configuration 기능을 직접 사용하여, 커스텀 설정을 추가하는 방법도 있다. 예를 들어, 개발 중 자주 사용하는 기능을 자동으로 구성할 수 있는 설정을 만들고 싶다면, 직접 Auto Configuration 클래스를 작성할 수 있다.

 

먼저, 간단한 서비스 클래스를 작성해보자:

package com.example.demo;

public class MyService {
    public String serve() {
        return "Service is running";
    }
}

 

이제 이 클래스를 자동으로 설정해주는 Auto Configuration 클래스를 만들어보자:

package com.example.demo;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyServiceAutoConfiguration {

    @Bean
    public MyService myService() {
        return new MyService();
    }
}

 

이렇게 구성한 후, spring.factories 파일에 Auto Configuration 클래스를 등록한다:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.demo.MyServiceAutoConfiguration

 

이제 애플리케이션을 실행하면 MyService 클래스가 자동으로 설정되고, 별도의 설정 없이 사용할 수 있게 된다.

 

정리


Spring Boot의 Auto Configuration은 개발자의 편의성을 극대화시켜주는 강력한 기능이다. 덕분에 개발자는 반복적이고 지루한 설정 작업을 줄이고, 비즈니스 로직에 더 집중할 수 있다.

 

또한 커스텀 Auto Configuration을 통해 자신만의 설정을 자동으로 적용할 수 있다는 점도 유용하다. Auto Configuration의 원리를 이해하면 Spring Boot의 유연성과 확장성을 더욱 잘 활용할 수 있다.

728x90

댓글