[Spring] - @Bean, @Configuration, @Component
Spring에서 Bean이란 Spring IoC 컨테이너(Bean Factory)에 의해 관리되는 Java Object를 Bean이라고 하며
Bean 설정소스를 로드하고 생성된 Bean을 제공하며 기본적으로 '싱글톤' 으로 관리한다.
만약 개발자가 new 연산자로 객체를 생성했을때 그 객체는 Spring IoC 컨테이너에 의해 관리되지 않기 때문에
Bean이라고 할 수 없다.
Spring Bean을 등록하는방법은 @Bean, @Configurtaion, @Component 3가지 어노테이션을 사용하면 되는데
각 어노테이션은 어느 상황에 사용해야 되는지 살펴보겠다.
1. @Bean
임의의 클래스를 생성하여 @Bean 어노테이션을 붙혀주면 된다
단, 여기서 주의할 점은 해당 어노테이션을 선언한다해도 제대로 동작하지 않는다.
해당 클래스에 @Configuration 이라는 어노테이션을 선언해줘야 하는데 이 어노테이션은 이름에도 나와있다싶이
스프링한테 이 클래스가 설정파일이라는걸 알려주기 위함이다.
@Bean 어노테이션은 개발자가 직접 제어가 불가능한 라이브러리를 사용할때나 초기설정을 하기위해 사용된다.
java.util 패키지에서 제공하는 Map 인터페이스는 개발자가 직접 제어를 할 순 없지만 위 사진과 같이 초기설정을
할 수 있다.
2. @Component
개발자가 직접 개발한 클래스를 Bean으로 등록하고싶을땐 해당 어노테이션을 사용하면 된다.
예를들어 두개의 정수를 전달받아 덧셈을 처리하는 기능을 개발하고자하 할때 @Component를 사용해주면 된다.
그리고 @Bean과 @Component 어노테이션을 선언할 수 있는 곳도 다르다.
아래의 사진을 보게되면 @Bean은 Method, @Component는 Type에만 선언할 수 있으며 그 외에 명시되지않은 곳에서
선언하게되면 컴파일 에러를 내뱉게 된다.
이제 직접 등록한 빈이 제대로 동작이 되었는지 Test를 작성해보자 !!
Test 결과
정상적으로 빈이 등록된게 확인되었다. !
스프링을 공부하면서 얕게 알았던 내용들을 정리해보는 시간을 가졌는데 아직도 정리할게 너무 산더미처럼 쌓였다.ㅠ