스프링에서의 빈(Bean) 생성과 관리
1. **빈의 정의**: 스프링 빈은 스프링 컨테이너(ApplicationContext)에 의해 생성되고 관리되는 객체입니다. 이러한 빈은 통 비즈니스 로직을 담고 있는 컴포넌트나, 데이터 접근, 서비스 레이어 등을 담당합니다.
2. **빈의 생성**: 빈은 보통 `@Component`, `@Service`, `@Repository`, `@Controller` 등의 애노테이션을 통해 클래스 레벨에서 선언됩니다. 또한, XML 설정이나 자바 설정을 통해서도 빈을 생성할 수 있습니다.
3. **빈의 라이프사이클**: 스프링 컨테이너가 시작될 때, 빈은 생성되고 의존성이 주입됩니다. 컨테이너가 종료될 때, 빈은 소멸됩니다.
4. **의존성 주입(Dependency Injection)**: 빈은 필요한 다른 빈을 스프링 컨테이너로부터 자동으로 주입받을 수 있습니다. 이는 `@Autowired` 애노테이션을 통해 이루어집니다.
5. **싱글턴과 프로토타입 스코프**: 스프링에서 빈은 기본적으로 싱글턴 스코프를 가집니다. 이는 하나의 빈 인스턴스만 생성하여 재사용하는 것을 의미합니다. 프로토타입 스코프도 있는데, 이 경우에는 빈을 요청할 때마다 새로운 인스턴스가 생성됩니다.
6. **빈과 컴포넌트**: `@Component`는 빈을 생성하는 가장 기본적인 애노테이션입니다. 이외에도 `@Service`, `@Repository` 등이 있으며, 각각의 애노테이션은 특별한 용도나 추가적인 메타데이터를 제공합니다.
7. **자원 효율성**: 싱글턴 스코프를 사용하면, 메모리와 리소스를 효율적으로 사용할 수 있습니다. 이는 애플리케이션의 성능을 향상시키는 요소 중 하나입니다.