본문 바로가기
SpringBoot

[면접]springboot 예상 질문

by devebucks 2020. 7. 30.
728x90

안녕하세요. 이번 글은 페이스북에서 좋은 글이 올라온 것 같아서 한번 정리해 보았습니다.

Springboot 면접 질문

 

1. Spring Boot Common Interview Questions

스프링부트는 자바 개발을 위해 spring framework를 단순하게 사용하기 위한 것입니다.

기존의 Spring framework는 많은 설정과 몇몇 jar파일들 그리고 어려운 startup curve의 특징을 가지고 있었습니다. 개발자들이 고통스러운 원인이기도 했습니다. springboot는 이런 고통을 해소시켜 줍니다.

질문1. 스프링부트는 뭔가요?(질문가능성 : 하)

Spring Boot는 개발의 simpify를 최우선으로 한 java framework입니다.

Spring Boot는 Spring MVC 기반의 Java Web 개발을 더 쉽게 만들어주는 특징은 다음과 같습니다.

  • auto-configuration
  • embedded servlet container
  • starter-dependencies
  • Actuator
  • Spring Boot CLI

질문2. 스프링부트 쓰면 좋은점이 무엇인가요?(질문가능성 : 하)

convenience(편리함)과 productivity(생산성)이 가장 큰 이점입니다.

SpringBoot Application은 일반 자바 어플리케이션을 main 클래스에서 실행한 것처럼 실행할 수 있습니다.

starter dependency는 다른 공통 라이브러리를 자동으로 import합니다.

해Spring Boot CLI 기능은 Groovy를 사용해서 Spring Boot Application 작성을 더 쉽게 해줍니다.

 

질문3. Spring Boot와 Spring MVC의 차이점이 무엇인가요?(질문가능성 : 중)

둘 다, 스프링 프레임워크의 범주에 포함됩니다. 각각 다른 문제를 해결하기 위한 프레임워크입니다. 

Spring MVC는 Model-View-Controller 디자인패턴을 사용하는 일관된 구조를 제공함으로써 자바 웹 개발을 쉽게 하게 해줍니다. 반면, 스프링부트는 Spring MVC를 포함하는 Spring framework를 가지고 웹 개발을 하면서 가지는 고통스러운 설정, 의존성 관리 그리고 애플리케이션 실행을 더 간편하고 쉽게 개발하게 해줍니다.

 

질문4. 스프링부트랑 Core 스프링의 차이점은 무엇인가요?(질문가능성 : 중)

Springboot랑 Core 스프링은 다른 프레임워크입니다. Core Spring은 Dependency Injection과 Inversion of Control를 제공하는 Spring Container를 말합니다. 

 

2. Spring Boot Auto-Configuration 질문(질문가능성 : 중)

auto-configuration는 Springboot에서 가장 중요한 특징입니다. auto-configuration은 빌드하고자 하는 애플리케이션이 어떤 종류의 애플리케이션인지 탐지해서 애플리케이션이 필요로 하는 컴포넌트들을 자동으로 설정해줍니다.

질문5. Spring Boot Auto-Configuration은 무엇인가요?(질문가능성 : 중)

예로, Security가 pom.xml에 메이븐 의존성 등록이 되어 있습니다. 그러면, classpath에 올라가겠죠? 커스텀 설정이 들어가지 않으면, "/"가 아닌 다른 url로 요청을 보내면, 스프링 부트 자체의 로그인 페이지를 보여줍니다. 스프링부트가 Security의존성이 추가된 것을 알고, 자동으로 기본적인  Web Security의존성에 대한 기능이 설정된 것입니다.

 

두 번째 예로, Spring MVC가 classpath에 올라가있습니다. 스프링의 DisapatcherServlet이 자동으로 설정이 되고, Spring MVC를 사용할 수 있게 됩니다.

 

질문6. auto-configuration은 어떻게 동작하나요? 설정된 건 어떻게 확인하나요?(질문가능성 : 중)

Spring Boot auto-configuration가 classpath를 체크합니다. 체크해서 예를 들어 thymeleaf가 있으면,  Thymelead template resolver, view resolver, and a template engine 이 것들을 자동으로 설정해 줍니다.

 

만약, Spring Data JPA가 classpath에 있으면, 자동으로 repository interface들로부터 repository implementations를 만들어줍니다.

 

질문7. 일반적인 스프링부트 annotation은 뭐가 있을까요?(질문가능성 : 중)

@SpringBootApplication입니다. @Configuration, @ComponentScan와 @EnableAutoConfiguration 3개의 어노테이션과 결합된 하나의 어노테이션입니다. 보통 메인 클래스에 선언됩니다.

 

  • @Contiguration : 자바  설정입니다.
  • @ComponentScan : @Component가 선언된 객체들을 Spring Boot에 Bean으로 등록을 해줍니다.
  • @EnableAutoConfiguration : Spring Boot's auto-configuration features 

3. Spring Boot Starter Dependency에 대한 질문

질문8. Starter dependency는 무엇인가요?

starter dependency는 스프링부트에서 의존성 관리 문제를 해결해주는 역할을 합니다. 우리가 스프링부트를 사용할 때, JPA나 Thymeleaf Template가 현재 프로젝트에 적합한 버전이 무엇인지 알아야하거나  필요한 의존성 리스트를 상세하게 알 필요가 없습니다. 단지 Gradle이나 Maven build file에 추가해주면됩니다.

 

starter가 Maven이나 Gradle file에 등록한 의존성jar를 자동으로 프로젝트에 로드해 줍니다.

spring-boot-starter-web를 의존성 추가하면, Spring MVC Jar를 프로젝트에 import합니다.

POM.xml
Maven을 통해서 들어온 의존성

질문9. 스프링부트에서 properties정의는 어디에, 어떻게 하나요?(질문가능성 : 하)

 application.properties파일에 정의하면 되고, springboot가 자동으로 읽습니다. 예로 server.port=9000으로 하면, 내장 톰켓이 실행되면, 디폴트 8080이 아니라 9000으로 앱이 실행됩니다.

728x90

댓글