목차
1. Bean이란 무엇일까?
2. Bean을 수동으로 등록하는 방법
3. Bean을 자동으로 등록하는 방법
Bean이란 무엇일까?
스프링에서 IoC 컨테이너에 보관되어 관리되는, 어플리케이션에서 중추적인 역할을 담당하는 여러 객체들을 Bean이라고 부른다. 좀 더 쉽게 설명하자면, 그냥 스프링에서 만들어서 관리하면서 쓰는 유용한 객체들을 Bean이라고 한다.
Bean의 생성, 의존성 주입, 관리는 모두 스프링 IoC 컨테이너의 도움을 받게된다. Bean을 POJO라고 부르는 경우도 있는데 말 그대로 그냥 일반적인 객체임을 강조하기 위해 POJO라고 부른다.
Bean을 수동으로 등록하는 방법
만약에 Bean을 수동으로 직접 등록하고 싶다면, 설정 클래스 파일에 @Configuration을 적용해 주고, 그 내부에서 스프링 Bean으로 등록할 메서드에 대해 @Bean 어노테이션을 적용시켜 주면 스프링 컨테이너에 등록된다.
해당 코드는 MyConfig라는 설정 파일을 이용해 helloMyBean()을 Bean 객체로 등록한다.
스프링 컨테이너는 @Configuration이 붙어 있는 클래스를 찾아 파싱 후, @Bean이 붙은 Object를 Bean 객체로 등록하게 된다.
그렇다면 @Configuration 없이 @Bean만 사용하면 안될까?
만약 Bean 객체로 등록된 어떤 클래스 내에서 @Bean을 이용해 Bean 객체로 등록하는 것도 가능하다. 하지만, @Configuration은 CGLIB 라이브러리를 이용해 프록싱을 하여, 해당 @Bean 객체가 싱글톤으로 등록됨을 보장해준다.
스프링 컨테이너는 기본적으로 Bean 객체를 싱글톤으로 관리하기 때문에 반드시 @Configuration 어노테이션을 함께 사용할 것을 권한다.
Bean을 자동으로 등록하는 방법 - @Component 이용하기
@Component 역시 @Bean과 같이 Bean으로 등록하고 싶은 Object에 붙여 주지만, 스프링에서는 컴포넌트 스캔(Component Scan)을 이용해서 @Component가 붙은 모든 Object를 Bean으로 자동 등록 시켜준다.
또한, @Bean의 경우 메서드에 적용시키며, 보통 외부 라이브러리 같이 개발자가 직접 변경이 어려운 대상에 사용하는 것이 권장된다.
반면, @Component의 경우, 클래스에만 사용하고, 개발자가 직접 변경이 가능한 대상에 사용한다는 차이 또한 존재한다.
@Component를 사용하는 또 다른 어노테이션
클래스 레벨에 적용되는 @Component 어노테이션은 주로 스프링에서 자주 사용되는 다른 어노테이션들 속에 포함된 경우가 많다. 대표적인 몇 가지 어노테이션들을 함께 알아보자.
- @Controller : 스프링 MVC 패턴에서 해당 클래스에 대해 Controller 역할 지정. Controller는 모델 객체를 만들어 View에 담아서 이를 반환해 주는 역할이다.
- @RestController : @Controller와 역할은 같으나, View 반환이 아닌 주로 JSON이나 XML형태로 된 객체를 반환하기 위해 사용한다.
- @Service : 스프링 MVC 패턴에서 해당 클래스에 대해 Service의 역할 지정. Service는 주로 사용자의 요구사항을 처리하는 실질적은 비즈니스 로직을 작성하는 layer이다.
- @Repository : 스프링 MVC 패턴에서 해당 클래스에 대해 Repository의 역할 지정. Repository는 주로 DB 등 외부와의 통신을 담당한다.
- @Configuration : Bean 등록을 위해 사용하는 @Configuration 어노테이션 역시, 그 내부에는 @Component가 붙어 있다.
'백엔드' 카테고리의 다른 글
var, let, const에 대해 알아보자. (0) | 2024.03.23 |
---|