dev-well-being.log
로그인
dev-well-being.log
로그인
Spring Bean이란?
dev-well-being
·
2023년 8월 31일
팔로우
1
CS
Spring
1
Bean이란?
빈(Bean)은 스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트이다. 즉 스프링 컨테이너가 관리하는 자바 객체를 뜻하며, 하나 이상의 빈(Bean)을 관리한다.
Bean 등록 방법
빈을 스프링 컨테이너에 등록하는 방벙에는 두 가지가 있다.
@ Bean을 통해 직접 등록하는 방법과 @ComponentScan을 이용하여 자동으로 빈 등록하는 방법이 있다.
@Bean
스프링이 뜰 때에 스프링은 자동으로 @Configuration이 붙은 클래스를 찾아서 구성 정보로 사용한다. 이 클래서에서 Bean을 등록하고 의존관계주입을 처리할 수 있다.
빈 객체로 등록하고 싶은 메서드의 위에 @Bean 어노테이션을 추가하면 된다.
@Component
@Configuration이 붙은 클래스에 @ComponentScan을 붙여 @Component가 붙은 객체를 찾아 자동으로 빈등록하는 방법이 있다.
빈 객체로 등록하고 싶은 클래스에 @Component를 추가한다.
Spring Bean의 이벤트 라이플 사이클
Spring Bean은 스프링 컨테이너 내부에서 생성되고, 스프링이 종료되기 전까지 생명주기(Life-Cycle)을 가지고 있다.
스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백(EVENT) -> 앱 본연의 동작 수행 -> 소멸전 콜백(EVENT) -> 스프링 종료
즉, 스프링 컨테이너가 가동되고 본격적으로 앱이 동작하기 전에 한 번, 스프링이 종료되기 전에 한번 특정한 동작을 수행할 수 있는 이벤트가 존재한다.
이러한 이벤트에서 우리는 초기화 콜백을 이용하여 테스트로 사용할 데이터를 앱의 사전 동작 전에 미리 저장한다던지, 또는 소명전 콜백을 이용하여 사고에 가깝게 스프링이 종료되는 상황에서 데이터를 백업하는 등의 동작을 수행할 수 있다.
Bean Scope란?
빈 스코프는 말 그대로 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다.
싱글톤(Singleton) : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다.
프로토타입(Prototype) : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다.
웹 관련 스코프
request : 웹 요청이 들어오고 나갈 때까지 유지되는 스코프이다.
session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프이다.
application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프이다.
참고자료
https://velog.io/@zenon8485/%EC%8A%A4%ED%94%84%EB%A7%81-%EA%B8%B0%EB%B3%B8-%EC%9B%90%EB%A6%AC-4.-%EC%8A%A4%ED%94%84%EB%A7%81-Bean%EC%9D%98-%EC%83%9D%EB%AA%85%EC%A3%BC%EA%B8%B0
https://ittrue.tistory.com/221
https://m42-orion.tistory.com/99
dev-well-being
안녕하세요!! 좋은 개발 문화를 위해 노력하는 dev-well-being 입니다.
팔로우
이전 포스트
Spring의 IOC란 무엇인가?
다음 포스트
비관적인 락 VS 낙관적인 락
0개의 댓글
댓글 작성