본문 바로가기
BackEnd/Spring

bean

by 해학 2024. 12. 23.
728x90

프링(Spring) 프레임워크에서 Bean스프링 IoC(Inversion of Control) 컨테이너에 의해 관리되는 객체를 의미합니다. Bean은 애플리케이션의 핵심 구성 요소로, 스프링 컨테이너가 생성, 관리, 소멸을 책임집니다.

Bean의 주요 특징

  1. 객체 관리: Bean은 스프링 컨테이너가 객체의 생명 주기를 관리합니다.
    • 객체 생성
    • 의존성 주입
    • 초기화 및 소멸 처리
  2. 의존성 주입(DI): Bean 간의 의존 관계를 설정하고 주입합니다.
  3. 싱글톤(Singleton) 기본 설정: 스프링 Bean은 기본적으로 싱글톤으로 관리됩니다. 하나의 컨테이너 내에서는 동일한 Bean 인스턴스가 재사용됩니다.
    • 필요에 따라 @Scope 어노테이션을 사용해 프로토타입 등 다른 스코프를 지정할 수 있습니다.
  4. 구성 메타데이터: 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은 다음 단계를 거칩니다:

  1. 객체 생성: 컨테이너가 Bean 인스턴스를 생성합니다.
  2. 의존성 주입: 필요 시 다른 Bean이나 리소스를 주입합니다.
  3. 초기화: Bean의 초기화 작업이 실행됩니다.
    • @PostConstruct 또는 InitializingBean 인터페이스의 afterPropertiesSet() 메서드 사용 가능.
  4. 사용: Bean이 사용됩니다.
  5. 소멸: 애플리케이션 종료 시 Bean의 소멸 작업이 실행됩니다.
    • @PreDestroy 또는 DisposableBean 인터페이스의 destroy() 메서드 사용 가능.

Bean 스코프

Bean의 스코프는 객체의 생존 범위를 정의합니다. 주요 스코프는 다음과 같습니다:

  1. Singleton: 기본 스코프, 컨테이너당 하나의 Bean 인스턴스 생성.
  2. Prototype: 요청할 때마다 새로운 인스턴스 생성.
  3. Request: HTTP 요청마다 새로운 인스턴스 생성 (웹 애플리케이션용).
  4. Session: HTTP 세션마다 새로운 인스턴스 생성 (웹 애플리케이션용).
  5. 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