++/CS

[TIL] CS공부 6일차

writtenbyrla 2024. 3. 11. 12:02

즉시로딩지연로딩은 각각 언제 사용하면 좋은지, 주의할 점은 무엇인지 설명해주세요.

즉시로딩과 지연로딩은 ORM에서 데이터를 가져오는 방식을 나타냅니다.

지연 로딩이란 데이터가 필요한 시점에 로드하는 것입니다. 보통 지연로딩을 기본으로 사용하며 필요한 경우에만 데이터를 가지고오므로 네트워크 트래픽을 줄이고 메모리 사용을 최적화 할 수 있습니다. 하지만 연관관계에 있는 엔티티의 경우 별도로 N개의 쿼리가 추가 요청되어 성능저하의 요인이 되기도 합니다.

즉시 로딩이란 모든 데이터를 한 번에 로드하는 방식으로, 여러 개의 엔티티가 연관관계에 있을 때 사용하기 유용하며 대량의 데이터를 처리할 때 성능이 저하 될 수 있고, 연관 엔티티를 한번에 모두 로드하므로 메모리 사용량이 증가할 수 있다는 단점이 있습니다.

 

 

 

 

 


 

 

 

 

 

 

Spring bean container 생성부터 스프링 종료까지의 사이클에 대해 알려주실 수 있을까요? @PostConstruct@PreDestroy 어노테이션의 역할도 함께 알려주시면 좋습니다.

Spring bean container는 Spring에서 빈(Bean) 객체의 생명주기를 관리하고 의존성 주입을 수행하는 주체입니다.

1. Bean 정의 및 생성
스프링 애플리케이션이 시작될 때 XML 파일이나 JavaConfig, 어노테이션 등으로부터 빈(Bean) 정의를 로드합니다.

2. Bean 인스턴스화 및 의존성  주입
Spring bean container는 Bean 정의를 바탕으로 Bean을 인스턴스화하고, 생성자나 속성 주입을 사용하여 필요한 의존성을 주입합니다.

3. Bean 초기화(@PostConstruct)
Bean이 인스턴스화되고 모든 의존성이 주입되면, 스프링은 빈이 초기화될 때 실행되어야 하는 메서드를 호출합니다.  @PostConstruct 어노테이션이 지정된 메서드가 호출되고 Bean은 초기화 된 후 애플리케이션 사용을 위한 준비가 완료됩니다.

4. Bean 사용
애플리케이션이 실행 되고 Bean이 사용됩니다.

5. Bean 소멸(@PreDestroy)
애플리케이션이 종료되거나 Bean이 더 이상 필요없다면 @PreDestroy 어노테이션이 지정된 메서드가 호출되어 Bean이 종료되기 전 실행된 작업을 정리하는 작업을 수행합니다.

6. 컨테이너 종료
빈 소멸 작업이 완료되면 Spring bean container가 종료됩니다.


@PostConstruct는 Bean의 초기화 작업을 위해 사용되며,
@PreDestroy는 Bean이 소멸되기 전 리소스 해제, 트랜잭션 처리, 종료 로직 실행 등 정리에 필요한 작업을 수행합니다.

bean을 사용하나요?

bean은 스프링 컨테이너에 의해 관리되는 재사용 가능한 인스턴스화된 객체를 의미합니다.
개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean으로 만들어 의존관계를 관리할 수 있도록 하기 위해 주로 사용됩니다.

 

 

 

 

 


 

 

 

 

AOP, Interceptor, Filter 의 차이점, Request가 들어올 때 거치는 순서, 각 역할들의 장점을 설명해주실 수 있을까요?

AOP, Interceptor, Filter는 애플리케이션에서 특정 동작을 캡슐화하여 핵심 기능에서 분리하는 기술로 코드의 중복을 줄이고 재사용성을 높입니다.

차이점
AOP(Aspect-Oriented Programming)
관점 지향 프로그래밍으로 관심사를 모듈화하여 애플리케이션의 핵심 로직과 분리합니다.
핵심 비즈니스 로직을 수정하지 않고 별도로 관심사를 분리하여 쉽게 적용할 수 있으며 메서드 호출 전/후로 적용됩니다.

Interceptor
컨트롤러의 실행 전/후에 특정 로직을 추가합니다.
주로 로깅, 인증 및 권한 검사, 트랜잭션 관리 등과 같은 HTTP 요청 처리와 관련된 작업을 수행합니다.


Filter
웹 애플리케이션에서 요청과 응답을 가로채 특정 작업을 수행하는데 사용됩니다.
스프링 내부 기능과 관련없이 독립적으로 사용할 수 있으며 주로 보안이나 인코딩 등을 처리하는 데 사용됩니다.


Request가 들어올 때 거치는 순서
Filter: 요청이 서블릿에 도달하기 전에 실행됩니다.
Interceptor: 컨트롤러(핸들러)가 실행되기 전/후에 실행됩니다.
AOP: 메서드 호출 전/후에 적용됩니다.

 

'++ > CS' 카테고리의 다른 글

[TIL] CS공부 8일차  (0) 2024.03.13
[TIL] CS공부 7일차  (0) 2024.03.12
[TIL] CS공부 5일차  (0) 2024.03.09
[TIL] CS공부 4일차  (0) 2024.03.08
[TIL] CS공부 3일차  (0) 2024.03.07