기존 Spring MVC에서는 xml을 활용해서 Bean 등록을 하고 있으나, 프로젝트의 규모가 커짐에 따라 사용하는 요소들을 xml에 등록하는 것이 상당히 번거로워서 어노테이션(Annotation, @)을 활용한 Bean 등록 방법이 탄생했다.
1. Spring Bean 이란?
Spring에서는 Spring의 DI Container에 의해 관리되는 POJO(Plain Old Java Object)를 Bean이라고 부르며, 이러한 Bean들은 Spring을 구성하는 핵심 요소이다.
Spring Bean의 구성요소
- class : Bean으로 등록할 java 클래스
- id: Bean의 고유 식별자
- scope : Bean을 생성하기 위한 방법( Singleton, prototype 등)
- constructor-arg: Bean 생성 시 생성자의 매개변수로 전달되는 인자 값
- property: Bean 생성 시 setter에 전달할 인자
아래와 같은 BeanConfig 클래스가 있고, 이를 스프링 컨테이너에 등록한다고 가정하자.

이 클래스를 빈으로 등록하기 위해서는 명시적으로 설정 클래스에서 @Bean 어노테이션을 사용해서 수동으로 스프링 컨테이너에 빈을 등록하는 방법이 있다. 설정 클래스는 다음과 같이 @Configuration 어노테이션을 클래스에 붙여주면 되는데, @Bean을 사용해 수동으로 빈을 등록해줄 때에는 메소드 이름으로 Bean 이름이 결정된다.