1. 스프링)기술면접질문
1)Spring bean container 생성부터 스프링 종료까지의 사이클에 대해 알려주실 수 있을까요?
@PostConstruct, @PreDestroy 어노테이션의 역할도 함께 알려주시면 좋습니다.
-스프링 프레임워크에서 빈 컨테이너는 자바 객체(Bean)의 생성부터 소멸까지의 생명주기를 관리합니다.
이 과정에서 @PostConstruct와 @PreDestroy 어노테이션은 빈의 초기화와 소멸 시점에 특정 작업을 수행하도록 도와줍니다.
스프링 빈 컨테이너 생명주기
빈 컨테이너 생성: 스프링 IoC 컨테이너가 생성되며, 빈 객체들이 관리됩니다.
빈 객체 생성 및 의존성 주입: 컨테이너에 등록된 빈 객체가 생성되고, 필요한 의존성이 주입됩니다.
초기화 콜백: 빈 객체가 완전히 생성되고, 모든 의존성이 주입된 후 초기화를 위한 콜백 메서드가 호출됩니다.
빈 사용: 애플리케이션에서 빈 객체를 사용합니다.
소멸 콜백: 컨테이너가 종료되기 전에 빈 객체를 소멸하기 위한 콜백 메서드가 호출됩니다.
@PostConstruct와 @PreDestroy 어노테이션
@PostConstruct: 빈 객체의 생성과 의존성 주입이 완료된 후, 초기화를 위해 단 한 번만 실행되는 메서드에 사용됩니다.
@PreDestroy: 컨테이너가 종료되기 전에 빈 객체를 정리하거나 자원을 해제하기 위해 사용되는 메서드에 적용됩니다.
2)AOP, Interceptor, Filter 의 차이점, Request가 들어올때 거치는 순서, 각 역할들의 장점을 설명해주실 수 있을까요?
AOP(Aspect-Oriented Programming), Interceptor, 그리고 Filter는 스프링 프레임워크에서 요청을 처리하고 애플리케이션의 흐름을 관리하는 중요한 요소입니다. 각각의 역할과 장점, 그리고 요청이 들어올 때 거치는 순서입니다.
AOP, Interceptor, Filter의 차이점
Filter서블릿 필터는 서블릿 스펙의 일부로, 요청과 응답을 변경할 수 있는 재사용 가능한 코드입니다. 주로 인코딩 변환, 로그 및 인증과 같은 요청 전과 후에 공통적으로 수행해야 하는 작업에 사용됩니다.웹 애플리케이션에 선언되며, 스프링 컨텍스트 외부에서 실행됩니다. 1Interceptor스프링 MVC의 일부로, 컨트롤러가 요청을 처리하기 전후로 추가 작업을 할 수 있게 해줍니다.주로 로깅, 인증, 권한 검사 등에 사용됩니다.스프링 컨텍스트 내에서 실행되며, AOP보다 더 세밀한 제어가 가능합니다.
AOP관점 지향 프로그래밍은 애플리케이션의 공통 관심사를 모듈화하는 프로그래밍 패러다임입니다.로깅, 트랜잭션 관리 등 애플리케이션 전반에 걸쳐 사용되는 기능을 관리하는 데 사용됩니다.메소드 실행 전후, 예외 발생 시 등 다양한 시점에 적용할 수 있습니다.
요청 처리 순서
Filter: 가장 먼저 요청을 받아 처리합니다. 필터는 DispatcherServlet 실행 전후에 동작합니다.
Interceptor: 필터 다음으로 요청을 처리합니다. 컨트롤러 메소드 호출 전후에 동작합니다.
AOP: 인터셉터 다음으로, 메소드 실행 전후에 동작합니다. 가장 세밀한 로직 처리가 가능합니다.
각 역할의 장점
Filter애플리케이션의 모든 요청과 응답에 대해 공통적인 처리를 할 수 있습니다.스프링 컨텍스트 외부에서 동작하기 때문에 스프링과 무관한 일반적인 웹 애플리케이션에도 사용할 수 있습니다.
Interceptor스프링 MVC와 밀접하게 통합되어 있어 스프링의 다양한 기능과 함께 사용하기 용이합니다.요청 처리 전후, 뷰 렌더링 전후 등 다양한 시점에 특정 로직을 실행할 수 있습니다.
AOP애플리케이션의 여러 부분에 걸쳐 있는 공통 관심사를 모듈화하여 관리할 수 있습니다.코드의 중복을 줄이고, 고수준의 모듈성을 달성할 수 있습니다.
'개발일지' 카테고리의 다른 글
| 2024.04.03TIL (0) | 2024.04.03 |
|---|---|
| 2024.04.02 TIL (0) | 2024.04.02 |
| 2024.03.29 TIL (0) | 2024.03.29 |
| 2024.03.28TIL (0) | 2024.03.28 |
| 2024.03.27 TIL (0) | 2024.03.27 |