728x90
프링(Spring) 프레임워크에서 Bean은 스프링 IoC(Inversion of Control) 컨테이너에 의해 관리되는 객체를 의미합니다. Bean은 애플리케이션의 핵심 구성 요소로, 스프링 컨테이너가 생성, 관리, 소멸을 책임집니다.
Bean의 주요 특징
- 객체 관리: Bean은 스프링 컨테이너가 객체의 생명 주기를 관리합니다.
- 객체 생성
- 의존성 주입
- 초기화 및 소멸 처리
- 의존성 주입(DI): Bean 간의 의존 관계를 설정하고 주입합니다.
- 싱글톤(Singleton) 기본 설정: 스프링 Bean은 기본적으로 싱글톤으로 관리됩니다. 하나의 컨테이너 내에서는 동일한 Bean 인스턴스가 재사용됩니다.
- 필요에 따라 @Scope 어노테이션을 사용해 프로토타입 등 다른 스코프를 지정할 수 있습니다.
- 구성 메타데이터: Bean은 XML, 자바 설정 파일, 또는 어노테이션을 통해 설정됩니다.
Bean 생성 방법
스프링에서 Bean을 정의하고 생성하는 방법은 다음과 같습니다.
1. XML 설정
XML 파일에서 <bean> 태그를 사용해 Bean을 정의합니다.
xml
코드 복사
<bean id="myBean" class="com.example.MyBean"/>
2. Java Config (자바 설정 클래스)
자바 클래스를 사용해 Bean을 등록합니다. @Configuration과 @Bean 어노테이션을 사용합니다.
java
코드 복사
@Configuration public class AppConfig { @Bean public MyBean myBean() { return new MyBean(); } }
3. 어노테이션 기반
클래스에 어노테이션을 사용하여 Bean을 정의합니다.
- @Component: 일반 Bean
- @Service: 서비스 레이어 Bean
- @Repository: 데이터 접근 레이어 Bean
- @Controller: 웹 컨트롤러 Bean
java
코드 복사
@Component public class MyBean { // Bean 정의 }
Bean의 생명 주기
스프링 Bean은 다음 단계를 거칩니다:
- 객체 생성: 컨테이너가 Bean 인스턴스를 생성합니다.
- 의존성 주입: 필요 시 다른 Bean이나 리소스를 주입합니다.
- 초기화: Bean의 초기화 작업이 실행됩니다.
- @PostConstruct 또는 InitializingBean 인터페이스의 afterPropertiesSet() 메서드 사용 가능.
- 사용: Bean이 사용됩니다.
- 소멸: 애플리케이션 종료 시 Bean의 소멸 작업이 실행됩니다.
- @PreDestroy 또는 DisposableBean 인터페이스의 destroy() 메서드 사용 가능.
Bean 스코프
Bean의 스코프는 객체의 생존 범위를 정의합니다. 주요 스코프는 다음과 같습니다:
- Singleton: 기본 스코프, 컨테이너당 하나의 Bean 인스턴스 생성.
- Prototype: 요청할 때마다 새로운 인스턴스 생성.
- Request: HTTP 요청마다 새로운 인스턴스 생성 (웹 애플리케이션용).
- Session: HTTP 세션마다 새로운 인스턴스 생성 (웹 애플리케이션용).
- Application: 애플리케이션 컨텍스트 범위에서 동일 인스턴스 유지.
스프링에서 Bean은 애플리케이션의 유연성과 유지 보수성을 높이는 핵심 개념입니다. 이를 통해 객체 간의 의존성을 효율적으로 관리하고 코드를 보다 모듈화할 수 있습니다.
728x90
'BackEnd > Spring' 카테고리의 다른 글
csrf 토큰 (0) | 2024.12.23 |
---|---|
Spring Security (1) | 2024.12.23 |
Spring Boot Validation (0) | 2024.12.18 |
질문 등록 (0) | 2024.12.18 |
layout (0) | 2024.12.17 |