빈이란 스프링 IoC 컨테이너가 관리하는 자바 객체를 의미합니다.
여기서 말하는 자바 객체는 POJO 자바 객체를 의미합니다.
@Component
어노테이션을 사용하는 방법이 있습니다.
@Component
어노테이션이 붙어 있는 경우 컴포넌트 스캔을 통해 빈으로 등록해줍니다.
스테레오 타입(Stereotype)인 @Controller
,@Service
,@Repository
와 같은 어노테이션은 내부에 @Component
어노테이션을 가지고 있는 합성 어노테이션으로 컴포넌트 스캔시에 스캔되는 어노테이션입니다.
해당 방법은 @Configuration
과 @Bean
어노테이션을 사용합니다.
@Configuration
어노테이션의 경우 간단하게 말하면 "해당 파일에 빈을 등록할 것이니 조회해줘"라는 표시입니다.
@Configuration
어노테이션이 붙은 파일 내에서 @Bean
어노테이션을 사용해서 빈을 직접 등록하게 되는데, @Bean
을 사용해 수동으로 등록할 때에는 해당 메서드 이름이 빈 이름으로 결정됩니다.
스프링의 경우 컴포넌트 스캔을 통해 자동으로 빈 등록을 하는 방식을 권장합니다.
Spring에서는 Main App 클래스에서@ComponentScan
어노테이션을 사용해서 등록해야하며,
Spring Boot 환경에서는 디폴트로 존재하는@SpringBootApplication
어노테이션 내부에@ComponentScan
어노테이션이 포함되어 있습니다.