반응형
안녕하세요
K-IN 입니다.
@Bean 어노테이션
Bean 어노테이션은 스프링 프레임워크에서 빈(Bean) 객체를 정의하는데 사용됩니다.
빈(bean)은 스프링 애플리케이션 컨텍스트에 등록되어 관리되는 객체이며 다음과 같은 기능을 제공합니다.
- 의존성 주입(Dependency Injection) 과 IoC 컨테이너 활용: Bean 어노테이션을 활용하면 스프링 IoC 컨테이너가 빈(Bean)을 인식하고 ✅ 객체 간의 의존성 주입을 자동으로 처리합니다.
- 빈의 라이프사이클 관리: 스프링은 Bean 어노테이션이 붙은 메서드의 라이프사이클을 관리하며 초기화 메소드나 소멸 메소드를 정의하여 빈의 라이프사이클 이벤트에 특정 동작을 수행할 수 있도록 합니다.
- Bean 어노테이션은 XML 기반의 설정 대신 코드 기반의 설정을 선호할 경우 유용합니다. 코드를 통해 명시적으로 스프링 빈(Bean)을 정의할 수 있도록 합니다.
아래의 예시는 빈(Bean)을 스프링 컨테이너에 등록하고 필요한 의존성을 스프링이 자동으로 주입해주는 메커니즘을 설명합니다.
IoC 컨테이너는 myService 메소드와 myController 메소드를 빈(Bean)으로 인식합니다.
- myController 메소드는 MyService 를 사용하고 있습니다.
- IoC 컨테이너는 MyService 가 필요한 것을 파악하고 자동으로 해당 의존성을 주입합니다.
이러한 의존성 주입을 통해 실제로 인자를 제공하지 않으나 코드가 동작하는 Spring 소스코드에 관한 궁금증이 풀렸습니다.
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
@Configuration
class AppConfig {
@Bean
fun myService(): MyService {
return MyService()
}
@Bean
fun myController(myService: MyService): MyController {
return MyController(myService)
}
}
class MyService {
// MyService의 구현
}
class MyController(private val myService: MyService) {
// MyController의 구현
}
이상입니다.
K-IN 올림.
반응형
'프로그래밍 > 코프링' 카테고리의 다른 글
코프링, 성공적인 서비스를 위한 멀티 모듈 프로젝트 구성 (Feat. 코틀린 Gradle) (55) | 2024.04.05 |
---|---|
코프링, 스프링 부트(Spring Boot) 코틀린으로 배워보자! (68) | 2024.03.20 |
코프링, 스프링 배치(Spring Batch) 코틀린으로 배워보자 (106) | 2024.03.07 |
코프링, 코틀린 데이터 클래스와 FlatFileParseException 해결 (75) | 2024.03.07 |
코프링, 스프링 @Configuration 어노테이션(Annotations) (5) | 2024.03.07 |