새소식

반응형
Java/Spring

스프링 빈(Spring Bean)이란?

  • -
반응형

스프링 빈(Spring Bean)

Spring IOC 컨테이너가 관리하는 자바 객체를 빈이라고 부른다. 이전 글에서 제어의 역전(IOC, Inversion Of Control)에 대해 알아봤는데 간단하게 설명하겠습니다.

예전의 자바 프로그래밍에서는 Class를 생성하고 new 키워드를 이용하여 객체를 생성한 후 사용했습니다.

하지만 Spring에서는 직접 new 키워드를 이용하여 객체를 생성하는게 아닌 Spring에 의하여 관리당하는

자바 객체를 사용한다. 이렇게 Spring에 의해 생성되고 관리되는 자바 객체를 Bean이라고 한다.

 

 

* 제어의 역전(IOC, Inversion Of Control)

일반적으로 에전 자바 프로그래밍에서는 객체들이 프로그램의 흐름을 결정하고, 각 객체를 직접 사용자가 생성하고

조작(객체를 직접 생성, 메소드 호출)했습니다. 즉, 모든 작업을 사용자가 제어하는 구조였습니다. 예를 들어 A 객체에서

B 객체에 있는 메소드를 사용하려면, B객체를 직접 A 객체 내에서 생성하고 메소드를 호출했습니다.

여기서 IOC를 적용할 경우, 객체의 생성 및 생명주기 관리를 IOC 컨테이너라는 특별한 관리자에게 맡깁니다. 사용자가 직접 객체를 생성하지 않고 객체의 생성 및 생명주기를 IOC 컨테이너가 컨트롤하게 됩니다. 즉, 사용자의 제어권을 다른 주체(IOC 컨테이너)에게 넘기는 것을 제어의 역전(IOC)라고 한다.

 

Spring IOC 컨테이너에 Spring Bean을 등록하는 방법

빈을 등록하는 방법은 다양하지만 크게 두가지 방법이 있다.

 

1. @ComponentScan 어노테이션을 사용한 Component Scanning

@ComponentScan 이란 @Component 어노테이션 및 streotype(@Service, @Repository, @Controlle) 등 어노테이션이 부여된 Class들을 자동으로 Scan하여 Bean으로 등록해주는 역할을 하는 어노테이션이다.

 

보통 Spring Boot 프레임워크를 사용하게되면 main 함수위에 사용한다.

 

위 그림을 예를 들자면 basePackages 옵션을 통해 com.angular.web의 package 하위에 존재하는 @Component 어노테이션 및 stereotype(@Service, @Repositofy, @Controller)  어노테이션이 부여된 Class들을 자동으로 Scan 하여 Bean 등록을 해준다.

 

위 그림과 같이 @Controller도 내부적으론 @Component 어노테이션을 사용한다. @Service, @Repository도 마찬가지

 

2. 빈 설정파일에 직접 빈 등록(@Configuration, @Bean)

직접 빈을 등록하기 위해선 @Configuration 및 @Bean 어노테이션을 사용한다.

라이브러리 혹은 내장 클래스 등 개발자가 직접 제어 불가능한 클래스의 경우 @Configuration 어노테이션과 @Bean 어노테이션을 사용하여 Bean으로 등록한다.

 

반응형

'Java > Spring' 카테고리의 다른 글

바이트 순서 표시(BOM, Byte Order Mark)  (0) 2021.12.02
RSA 암호화 만들기  (0) 2021.10.20
Spring Web Framework(IOC, DI)  (0) 2021.10.18
@Bean+@Configuration, @Component 어노테이션  (0) 2021.10.18
Spring Security  (0) 2021.08.28
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.