티스토리 뷰
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 결과
정상적으로 빈이 등록된게 확인되었다. !
스프링을 공부하면서 얕게 알았던 내용들을 정리해보는 시간을 가졌는데 아직도 정리할게 너무 산더미처럼 쌓였다.ㅠ
'Spring' 카테고리의 다른 글
[Spring] - properties파일에 정의된 값들 Java에서 조회 (1) | 2020.12.08 |
---|---|
[Spring] - 다중 DataSource구성하기 feat. (@Primary, @Qualifier) (0) | 2020.12.05 |
[Spring] - Spring Boot + Mybatis 연동 후 Test 해보기 (0) | 2020.12.04 |
[Spring] - application.properties DB접속정보로 DataSource 빈 생성이 안된이슈 (0) | 2020.12.02 |
[Spring] - Spring Boot + MySQL 연동 (0) | 2020.12.02 |