1. Spring Web MVC의 Dispatcher Servlet의 동작 원리에 대해서 간단히 설명해주세요.
먼저 HTTP 요청이 들어오게되면 Dispatcher Servlet으로 들어오게되고 해당 요청을 매핑한 컨트롤러가 있는지 찾게됩니다. 찾게되면 컨트롤러에 처리요청을 보내게되고 처리된 결과를 핸들러어뎁터에서 출력할 View의 이름을 같이 ViewResolver에게 전달해줍니다. 마지막으로 View에 전달된 처리결과를 Dispatcher 서블릿에 전달되면서 클라이언트에 내보내줍니다.
2. 프론트 컨트롤러 패턴이란 무엇인가요?
컨트롤러에 요청을 보내기 전에 프론트 컨트롤러를 먼저 거쳐서 각 요청에 맞는 컨트롤러를 찾아서 호출시킵니다.
공통 코드에 대해서 Front Controller에서 처리하고, 서로 다른 코드들만 각 Controller에서 처리할 수 있도록 합니다.
DispatcherServlet이 프론트 컨트롤러 패턴을 사용한 예이며 Bean으로 등록되어 package를 스캔하고
@Controller, @RestController 애노테이션을 확인하여 어떠한 요청이 들어오면 그에 맞게 적절한 Handler Method에 위임이 됩니다.
3. Servlet Filter와 Spring Interceptor의 차이는 무엇인가요?
서블릿필터는 디스패처서블릿과정의 전 부가작업을 처리할 수 있는 기능을 제공하고 디스패처서블릿과정을 거친 후에도 필터를 이용할 수 있다.
스프링인터셉터는 디스패처서블리과정중 컨트롤러에 요청이 전달될 때 전 후의 과정에 영향을 미친다.
4. Spring에서 CORS 에러를 해결하기 위한 방법을 설명해주세요.
WebMvcConfiguer을 구현한 Configuration 클래스를 만들어서 addCorsMappings()를 재정의 할 수 있고 Spring Security에서 CorsConfigurationSource를 Bean으로 등록하고 config에 추가해줌으로써 해결할 수 있습니다.
Controller 클래스에 @Crossorigin 어노테이션을 통해서도 해결 할 수 있습니다.
5. Bean/Component 어노테이션에 대해서 설명해주시고, 둘의 차이점에 대해 설명해주세요.
둘다 IoC 컨테이너에 빈으로 등록되기 위해 사용이 됩니다.
@Component 는 개발자가 작성한 Class를 기반으로 실행시점에 인스턴스 객체를(싱글톤으로) 1회 생성합니다.
@Controller, @Service, @Repository는 모두 컴포넌트 애너테이션이며 실행시점에 자동으로 의존성주입을 합니다.
@Bean은 개발자가 작성한 Method를 기반으로 메서드에서 반환하는 객체를 인스턴스 객체로 1회(싱글톤으로) 생성합니다.
6. POJO란 무엇인가요? Spring Framework에서 POJO는 무엇이 될 수 있을까요?
POJO는 프레임워크 인터페이스,클래스를 구현하거나 확장하지 않은 단순한 클래스이며 Java에서 제공하는 표준 API 외에 종속되지 않습니다. 특정환경에 종속되지 않아 코드가 간결하고 테스트 자동화에 유리합니다. 스프링에서는 도메인과 비즈니스 로직을 수행하는 대상이 POJO대상이 될 수 있습니다.
7. Spring Web MVC에서 요청 마다 Thread가 생성되어 Controller를 통해 요청을 수행할텐데, 어떻게 1개의 Controller만 생성될 수 있을까요?
'기술면접' 카테고리의 다른 글
기술면접:데이터베이스(1/2) (0) | 2023.04.03 |
---|---|
기술면접:스프링+JPA(3/3) (0) | 2023.03.31 |
기술면접 : 스프링 + JPA (1/3) (0) | 2023.03.27 |
기술면접 : JAVA(3/3) (0) | 2023.03.24 |
기술면접:JAVA(2/3) (0) | 2023.03.22 |