Bean
Spring에서는 Container를 이용해 객체들을 관리합니다. 이때 Container가 관리하는 자바 객체를 Bean이라고 부릅니다. 흔히 알고 있는 new를 통해 생성된 객체는 Bean이라고 할 수 없습니다. Bean은 getBean()을 통해 얻어질 수 있는 것을 Bean이라고 합니다. Spring에서의 빈은 ApplicationContext가 알고있는 객체, 즉 ApplicationContext가 만들어서 그 안에 담고있는 객체를 의미합니다. Spring에서 Bean을 등록하는 방법은 ComponentScan 방법과, Configuration에서 직접 등록하는 방법이 존재합니다. 스프링은 기본적으로 모든 Bean을 Singleton으로 생성하여 관리합니다. Bean은 다양한 Scope를 가질 수 있습니다.
ComponentScan
ComponentScan 방식은 @Component 어노테이션이 존재하는 클래스를 스캔하여 Bean으로 등록하는 방법입니다. @Controller(@RestController)와 @Service, @Repository는 @Component 어노테이션을 바탕으로 다른 어노테이션과 결합되어 만들어진 어노테이션이기 때문에 이 어노테이션이 붙은 클래스도 모두 Bean으로 등록됩니다.
@Component
public class SampleComponent { ... }
@Controller
public class SampleController { ... }
@RestController
public class SampleRestController { ... }
@Service
public class SampleService { ... }
@Repository
public class SampleRepository { ... }
Configuration
@Configuration 어노테이션을 보면 이 어노테이션도 내부적으로 @Component를 사용하기 때문에 @ComponentScan의 검색 대상이 되고, 그에 따라 @Configuration 붙은 클래스가 읽힐 때 내부에 정의한 Bean들이 등록됩니다.
@Configuration
public class SampleConfiguration {
@Bean
public Sample sample() {
return new Sample();
}
}
출처
'Domain > Spring' 카테고리의 다른 글
[Spring] JDBC와 Transaction (0) | 2021.08.18 |
---|---|
[Spring] JdbcTemplate (0) | 2021.08.09 |
[Spring] 템플릿-콜백 (0) | 2021.07.23 |
[Spring] 관점 지향 프로그래밍 (AOP / Aspect Oriented Programming) (0) | 2021.07.14 |
[Spring] 제어의 역전(IoC / Inversion of Control)과 의존성 주입(DI / Dependency Injection) (0) | 2021.07.14 |
댓글