[기술면접 스터디] 병렬 프로그래밍, Spring bean 라이프 사이클

rara_kim·2023년 3월 3일
0

기술면접

목록 보기
9/9

병렬 프로그래밍에 대해 설명해주세요.

병렬처리 혹 다른 표현으로 멀티프로세스 프로그래밍이란 쉽게 이야기하여 하나의 프로그램을 하나의 프로세스가 아닌 여러개의 프로세스를 이용하여 동시에 처리하게 만드는 프로그래밍 기법을 말한다.
이렇게 개발하는 이유는 여러 개의 프로세스를 동시에 활용하여 성능을 향상시키기 위함이다.

기본적으로 하나의 프로세스에서 N개의 쓰레드를 실행하는 멀티쓰레드 와는 다른 개념이다.
멀티 쓰레드 프로그래밍은 IO 관련 처리에서 비약적으로 성능을 향상시켜주는 데 비하여 멀티 프로세스 프로그래밍, 병렬 처리는 CPU 관련 처리에서 비약적으로 성능을 향상시킬 수 있다.



Spring bean container 생성부터 스프링 종료까지의 사이클에 대해 설명해주세요.(@PostConstruct, @PreDestroy)

Spring bean은 객체 생성 및 DI 주입이 끝난 후 부터 사용할 수 있다.
싱글톤 빈의 경우, 아래와 같은 Lifecycle을 가진다.

스프링 컨테이너 생성 -> 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료

스프링 빈 생명주기 콜백

빈 생명주기 콜백은 스프링 빈이 생성된 후 의존관계 주입이 완료되거나 죽기 직전에 스프링 빈 안에 있는 메서드를 호출해주는 기능이다.
스프링 빈 생명주기 콜백 사용방법으로는 3가지 방법이 있는데, 마지막을 가장 추천한다.
(인터페이스 사용, 설정 정보 초기화 메소드, 종료 메소드 지정, @PostConstruct, @PreDestroy 사용)

@PostConstruct

Spring은 bean을 초기화 한 이후에 @PostConstruct을 한번만 호출한다.
즉 @PostConstruct는 WAS 가 뜰 때 bean이 생성된 다음 딱 한번만 실행된다.
따라서 @PostConstruct를 사용하여 기본 사용자라던가, 딱 한번만 등록하면 되는 key 값 등을 등록하여 사용할 수 있다.

@PreDestroy

@PreDestroy 역시 Spring이 애플리케이션 컨텍스트에서 bean을 제거하기 직전에 단 한 번만 실행된다.

profile
느리더라도 꾸준하게

0개의 댓글