Java 백엔드(Spring) 기본 질문 10선 아주 짧은 정리

Eric Jung·2023년 6월 19일
0

Spring

목록 보기
2/2

1. JPA는 무엇인가?

JPA는 자바 진영에서 ORM(Object-Relational Mapping)
기술 표준으로 사용되는 인터페이스의 모음이다. 그 말은 즉, 실제적으로 구현된것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. JPA를 구현한 대표적인 오픈소스로는 Hibernate가 있다.

2. Spring Framework와 Spring Boot의 차이

SpringBoot가 가진 차이점은 Embed Tomcat을 사용, starter가 대부분의 dependency를 관리, XML설정을 하지 않아도 된다. jar file로 쉽게 배포가능.

3. Spring Web MVC의 Dispatcher Servlet의 동작 원리에 대해서 간단히 설명해주세요

HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러

4. Spring Bean Life Cycle에 대해 설명해주세요

생성->의존관계 주입->초기화->소멸

5. filter와 interceptor의 차이

필터 ⇒ 2EE 표준 스펙 기능으로 디스패처 서블릿 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공
인터셉터 ⇒ Spring이 제공하는 기술로써, 디스패처 서블릿이 컨트롤러를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공

6. Dependency Injection (방법 3가지)

DI(의존관계 주입)는 객체가 의존하는 또 다른 객체를 외부에서 선언하고 이를 주입받아 사용하는 것이다.

7. AOP로 실제 개발한 경험이 있다면 설명해주세요

AOP는 관점 지향 프로그래밍.
핵심 로직과 부가적인 로직을 각 모듈화하여 파생된 로직들을 다른 핵심 로직에서 재사용 하는 것을 말한다.
토큰 발급로직을 구현하면서 파라미터로 유저의 닉네임이나 토큰 정보를 받아 유저를 validation 하는 로직을 모듈화 했다. 그리고 그것을 포함한 나머지 validation 관련 부가적인 로직들을 새로운 클래스를 생성하여 한번에 모아 관리했다.

8. maven/gradle의 차이를 설명해주세요

Gradle은 작업 의존성 그래프를 기반으로하는 반면 Maven은 고정적이고 선형적인 단계의 모델을 기반으로한다. Gradle은 이미 업데이트된 테스크에 대해서는 작업이 실행되지 않으므로 빌드 시간이 훨씬 단축된다. Gradle 은 커스터마이징이 간편

9. 아파치, 톰캣은 각각 멀티 프로세스인가 멀티 쓰레드인가?

아파치는 정적인 데이터를 처리하는 웹 서버로, 기본적으로 멀티 프로세스로 구현되어 있다. 하지만 설정에 따라 멀티 쓰레드를 같이 운용 가능.
톰캣은 웹 앱 서버로 요청을 처리하기 위한 쓰레드 풀을 관리한다. 멀티스레드를 제공한다.

10. Spring Security 인증은 어떻게 이루어지나요?

1. 사용자가 로그인 정보와 함께 인증 요청을 한다.(Http Request)
2.  AuthenticationFilter가 요청을 가로채고, 가로챈 정보를 통해 UsernamePasswordAuthenticationToken의 인증용 객체를 생성한다.
3. AuthenticationManager의 구현체인 ProviderManager에게 생성한 UsernamePasswordToken 객체를 전달한다.
4. AuthenticationManager는 등록된 AuthenticationProvider(들)을 조회하여 인증을 요구한다.
5. 실제 DB에서 사용자 인증정보를 가져오는 UserDetailsService에 사용자 정보를 넘겨준다.
6. 넘겨받은 사용자 정보를 통해 DB에서 찾은 사용자 정보인 UserDetails 객체를 만든다.
7. AuthenticationProvider(들)은 UserDetails를 넘겨받고 사용자 정보를 비교한다.
8. 인증이 완료되면 권한 등의 사용자 정보를 담은 Authentication 객체를 반환한다.
9. 다시 최초의 AuthenticationFilter에 Authentication 객체가 반환된다.
10. Authenticaton 객체를 SecurityContext에 저장한다.

profile
Developer

0개의 댓글