본문 바로가기
codeit sprint backend/weekly paper

[5-2] Spring Boot의 Bean

by boolynn 2026. 2. 13.

✔️ Bean이란?

Bean은 Spring 프레임워크에서 Spring 컨테이너에 의해 관리되는 객체로, Spring Boot는 Spring 컨테이너가 객체, 즉 Bean을 관리하는 방식으로 동작한다. 자바 객체를 Bean으로 등록하면, 애플리케이션이 실행될 때 Spring이 그 생명주기와 의존성 주입을 책임진다.

 

✔️ Bean의 등록 방법

Bean을 등록하는 주요 방식으로는 크게 두 가지를 들 수 있다.

  1. 컴포넌트 스캔(Component Scan)
  2. 자바 기반 Bean 설정(Java Config)

컴포넌트 스캔(Component Scan)

클래스 선언부에 특정 어노테이션을 붙여 Spring이 자동으로 Bean을 찾고 등록하게 하는 가장 일반적인 방식이다.

@Service
public class BasicChannelService implements ChannelService {
    private final ChannelRepository channelRepository;
    private final ReadStatusRepository readStatusRepository;
    private final MessageRepository messageRepository;
    
    // 중략 ...
 }
  • 방법
    • @Service, @Repository, @Controller 등의 어노테이션을 클래스 선언부에 사용
  • 장점
    • 어노테이션만 붙이면 되므로 편리하고 코드가 간결해짐
    • 해당 클래스가 어떤 역할(서비스인지, 컨트롤러인지 등)을 수행하는지 직관적으로 이해 가능
  • 단점
    • 외부 라이브러리 클래스에는 어노테이션을 붙일 수 없음
    • 어떤 Bean들이 등록되어 있는지 한 눈에 파악하기 어려움(가독성이 떨어짐)

자바 기반 Bean 설정(Java Config)

설정 전용 클래스를 만들고, 메소드 위에 @Bean 어노테이션을 붙임으로써 직접 Bean을 생성/반환하는 방식이다.

@Configuration("configurationSection02")
public class ContextConfiguration {

    @Bean(name="member")
    public MemberDTO getMember() {
        return new MemberDTO(1, "user01", "pass01", "홍길동");
    }
    
}
  • 방법
    • @Configuration 클래스 안에 @Bean 어노테이션을 사용한다.
  • 장점
    • 외부 라이브러리의 객체도 Bean으로 등록 가능
    • 한 곳에 관리할 수 있어 유지보수에 유리
  • 단점
    • 매번 설정 클래스를 만들고 빈 등록 메소드를 작성해야 함(번거로움)

 

✔️ Bean 등록의 사용 전략

 

각각의 장단점을 고려해보았을 때, 다음과 같은 방식으로 Bean을 등록하면 효과적이다.

  1. 직접 작성하는 서비스/컨트롤러 등은 컴포넌트 스캔 방식을 사용
  2. 외부 라이브러리나 공통 설정의 경우 자바 기반으로 Bean을 설정