새발블로그
[Spring] Bean 등록 방식 (수동 vs 자동) 본문
스프링 빈(Bean)이란?
Spring IoC 컨테이너가 관리하는 객체를 "Bean"이라고 부른다. 이 Bean들은 애플리케이션 구동 시 스프링 컨테이너에 의해 생성되고, 주입되고, 소멸된다. 우리가 어떤 객체를 Bean으로 등록하느냐에 따라 스프링의 DI(의존성 주입) 및 생명주기 관리가 이루어진다.
수동 등록: @Bean
직접 자바 설정 파일에서 메서드를 정의해 Bean을 등록한다.
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
return new UserServiceImpl();
}
}
- 장점: 외부 라이브러리처럼 수정할 수 없는 클래스 등록에 유용
- 단점: 코드가 많아지고 관리 포인트 증가
자동 등록: @Component
클래스에 어노테이션을 붙이면, @ComponentScan이 자동으로 탐색하여 Bean으로 등록한다.
@Component
public class OrderServiceImpl implements OrderService {
// ...
}
- 장점: 설정 간결, 자동화 가능
- 단점: 어디서 등록되는지 추적 어려움
@Configuration, @ComponentScan 설정
@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {
}
- @Configuration: Bean 등록용 설정 클래스
- @ComponentScan: 자동 등록할 클래스 탐색 경로 설정
@Component와 파생 어노테이션

| 어노테이션 | 역할 |
| @Component | 일반 컴포넌트 등록 |
| @Service | 비즈니스 로직 컴포넌트 |
| @Repository | 데이터 접근 계층 DAO 등록 |
| @Controller | 웹 컨트롤러 등록 (MVC) |
어떤 방식 쓸까? 기준 정리
| 상황 | 추천 방식 |
| 내가 만든 클래스 | @Component |
| 외부 라이브러리 클래스 | @Bean |
| 설정을 명확히 드러내고 싶을 때 | @Bean |
| 빠르게 자동 등록하고 싶을 때 | @Component |
'Server > Spring' 카테고리의 다른 글
| [Spring] 의존성 주입 (Dependency Injection) (0) | 2025.07.08 |
|---|---|
| [Spring] Component Scan (컴포넌트 스캔) (0) | 2025.07.08 |
| [Spring] Spring Container 스프링 컨테이너 (0) | 2025.07.06 |
| [Spring] FrontController (0) | 2025.07.06 |
| [Spring] 요청 포워딩 (1) | 2025.07.06 |