카테고리 없음

CS 면접 준비 - Java, Spring 백엔드(지속 업데이트 예정)

Recfli 2024. 6. 5. 16:20

1. Spring Framework에 관해서 설명해주세요.

 

 스프링 프레임워크는 엔터프라이즈급 시스템을 쉽게 구추갛기 위한 프레임워크입니다. 객체지향에 관해 공부를 하다보면, 상속으로 기능을 추가하는 경우 추후 구조 변경의 어려움이 발생합니다. 따라서, 필요한 기능을 조립해서 사용하는데, 조립을 사용하더라도 프로그래머가 직접적으로 조립을 하면 코드 수정이 많아집니다.

 

 그러기 때문에 스프링 프레임워크에서는 스프링 컨테이너를 통해서 이 문제를 해결하며, 스프링 컨테이너가 지원하는 기능은 수동으로 혹은 자동으로 프로그래머가 등록한 객체를 싱글톤으로 생성, 애플리케이션 초기화 시점에 수정자와 생성자와 같은 방식으로 된 객체를 찾아 조립하는 역할을 합니다.

 

 또한, 이는 프로그래머가 아닌 스프링 자체에 대해서 이루어집니다.이러한 기능은 프로젝트가 거대해짐에 따라 수정할 부분을 최소화하고 객체의 재사용성을 늘려 불필요한 메모리 생성으로 인한 비용을 줄여주는 역할을 합니다.

 

※ 스프링 빈에 관해서 설명을 해주세요.

 스프링 빈은 프로그래머가 수동 혹은 자동으로 스프링 컨테이너 내에 등록한 객체를 의미합니다. 이는 애플리케이션이 켜지는 시점에 초기화되고 조립이 되며, 스프링 컨테이너 내에서 싱글톤으로 관리해줍니다. 스프링 빈으로 등록된 객체는 ApplicationContext 내에 클래스 타입과 String 타입의 이름으로 저장이 되어있으며, 필요하다면 이 객체를 직접 조작해서 원하는 객체를 찾을 수 있습니다.

 

※ 타입 충돌이 일어나는 경우에는 어떻게 해야 하나요?

 스프링 컨테이너 내부에서는 객체의 타입, 객체의 이름을 통해서 찾을 수가 있어서, 더 구체적으로 명시를 해주거나. 아니면 여러 개의 타입을 동시에 사용해야 하는 경우에는 Map이나 List 형태로 주입 받고 외부에서 필요한 객체를 찾을 때 String 값으로 찾고 싶은 객체를 지정해서 넘기면 찾아오는 방식으로 사용이 가능합니다.

 

참고 가능한 과거 글: https://intellectum.tistory.com/232


2. Spring AOP에 관해서 설명해주세요.

 

스프링 AOP는 Aspect Object Programming의 약자입니다. 자바로 구현하는 프로그램의 문제점은 종단 관심사에 관해서는 상속을 통해 해결할 수 있지만, 로깅과 트랜잭션 같은 횡단 관심사 처리에 관한 능력이 부족합니다. 이러한 내용을 별도로 분리해 작성할 수 있게 도와주는 것이 스프링 AOP이며 보통 애노테이션 기반으로 메서드나 클래스를 등록하면 해당 부분에 관한 공통 로직을 CGLIB 기술을 사용하여 마치 템플릿 메서드 패턴과 유사한 형태로 만들어줍니다. 지정 대상은 포인트컷으로 공통로직은 어드바이스로 작성을 할 수 있습니다.