22 자주 묻는 스프링 부트 인터뷰 질문 및 답변

게시 됨: 2022-11-10

곧 있을 인터뷰를 기대하고 있지만 어떤 질문을 해야 할지 확신이 서지 않는 Java Spring Boot 개발자입니까? 도와드리겠습니다!

이 기사는 면접관이 귀하를 테스트하는 데 사용할 수 있는 몇 가지 자주 묻는 Spring Boot 면접 질문과 답변을 요약하여 적절하게 준비하는 데 도움이 될 것입니다.

면접관은 전략적 Java Spring Boot 질문을 사용하여 지정된 역할과 관련된 면접 대상자의 기술 수준을 테스트합니다. 따라서 관련 질문을 준비하고 답변하는 방법을 알아야 합니다.

인터뷰 질문과 그에 상응하는 답변으로 바로 넘어가기 전에 Spring Boot가 무엇이며 Java 개발자에게 얼마나 도움이 되는지에 대한 기본 개요를 살펴보겠습니다.

자바 스프링 부트란?

이 Java 프레임워크는 2014년 중추 팀에서 만든 것입니다. 오픈 소스 프레임워크인 Spring Boot는 독립적이고 프로덕션 등급이며 JVM(Java Virtual Machine)에서도 실행할 수 있는 애플리케이션을 효율적으로 개발합니다.

Java 개발자는 빠르고 쉬운 설정 프로세스와 안전한 구성 시간을 위해 웹 애플리케이션 및 마이크로서비스 개발에 선호합니다.

Spring Boot에 의한 Spring 기반 애플리케이션의 쉬운 설정 및 구성은 다음을 포함하는 세 가지 핵심 기능으로 가능합니다.

  • 자동 구성 – Spring 애플리케이션의 자동 구성입니다.
  • Spring Boot는 기본적으로 사용할 구성과 필요한 종속성을 위해 설치할 패키지에 대한 독창적인 접근 방식을 제공합니다. 이 독창적인 접근 방식은 프로젝트를 빠르게 설정하는 데 도움이 됩니다.
  • Sprsetupoot를 사용하면 웹 서버 없이도 애플리케이션을 독립적으로 실행할 수 있습니다.

Spring Boot는 Java 개발자에게 어떤 도움이 됩니까?

예를 들어 Spring Boot를 사용하는 Java 개발자는 프로덕션 수준의 Spring 애플리케이션을 개발하는 데 필요한 모든 구성 요소의 자동 구성으로 더 쉽게 작업할 수 있습니다. 이는 장기적으로 개발 시간을 단축하고 궁극적으로 효율성을 높입니다.

Spring Boot는 또한 Spring JDBC, Spring Data, Spring Security 및 Spring ORM을 포함하는 Spring의 에코시스템과 쉽게 통합됩니다.

Java 개발자는 Spring Boot를 Oracle, MySQL, PostgreSQL 및 MongoDB와 같은 다른 데이터베이스와 연결할 수도 있습니다.

물론 XML 구성, Java Beans 및 데이터베이스 트랜잭션을 사용한 유연한 구성은 다른 유용한 기능 중 하나입니다.

따라서 이제 Spring Boot에 대한 기본 개요를 얻었으므로 인터뷰를 준비하는 데 도움이 될 자주 묻는 Spring Boot 인터뷰 질문과 답변을 살펴보겠습니다.

스프링 부트 인터뷰 질문 및 답변

스프링 부트 인터뷰 질문

Spring Boot의 몇 가지 기능은 무엇입니까?

이러한 인기 있는 기능 중 일부는 다음과 같습니다.

  • Spring Boot CLI는 Spring Boot 애플리케이션을 작성하기 위한 Groovy를 제공합니다. 장기적으로 상용구 코드는 피할 수 있습니다.
  • Spring Boot는 잠재적인 보안 위협으로부터 애플리케이션을 쉽게 보호하는 로깅 및 보안 기능을 제공합니다.
  • 프로젝트에 대한 관련 구성 요소의 자동 구성을 제공하여 불필요한 WAR 파일의 위험을 방지합니다.
  • 스타터 이니셜라이저는 기본 내부 프로젝트 구조를 설정합니다. 이렇게 하면 프로젝트 구조를 수동으로 설정할 필요가 없습니다.
  • Spring Boot 액추에이터 기능은 애플리케이션이 실행될 때 통찰력과 메트릭에 대한 액세스를 제공합니다.
  • 물론 주요 Spring Boot 기능 중 하나인 Starter Dependency는 특정 기능의 일반적으로 사용되는 종속성을 집계하는 데 도움이 됩니다.

스프링 부트 스타터란 무엇입니까?

Spring Boot 스타터는 애플리케이션의 종속성을 활성화하는 종속성 관리 공급자 세트를 포함하는 종속성 설명자입니다. 프레임워크에 자동 종속성 해결을 제공합니다. 스타터는 쉽고 빠른 개발을 향상시킵니다.

Spring Boot에서 Actuator란 무엇이며 장점은 무엇입니까?

액츄에이터는 애플리케이션이 실행될 때 애플리케이션 내부에서 일어나는 일을 모니터링할 수 있는 Spring Boot 기능 중 하나입니다.

예를 들어 디버깅 중에 액츄에이터를 사용하여 CPU 사용량 및 빈 식별과 같은 기능에 액세스할 수 있도록 하여 로그를 분석할 수 있습니다.

또한 액추에이터는 정보를 모니터링 및 관리할 뿐만 아니라 웹에서 데이터를 검색하는 프로덕션 준비 REST 엔드포인트에 대한 쉬운 액세스를 제공합니다.

백리향이란 무엇이며 백리향을 사용하는 방법은 무엇입니까?

Thymeleaf는 Spring 및 HTML5 Java 웹 애플리케이션 모두를 위한 자연스러운 템플릿 레이아웃을 생성하는 Java의 서버 측 템플릿입니다.

Spring Boot는 동적 웹 콘텐츠를 제공하기 위해 pom.xml 파일의 spring-boot-starter-thymeleaf 종속성을 사용하여 thymeleaf의 자동 구성을 수행합니다.

Spring Boot가 thymeleaf 템플릿 또는 HTML 파일을 읽고 렌더링할 수 있도록 하려면 템플릿을 src/main/resources/templates 에 배치합니다.

그런 다음 Thymeleaf는 index.html 파일을 구문 분석하고 인덱스 파일에서 사용할 수 있는 동적 값 대신 컨트롤러 클래스에서 전달한 실제 값을 사용합니다.

그런 다음 Spring Boot 애플리케이션이 실행되자마자 메시지가 웹 브라우저에서 렌더링됩니다.

 org.springframework.boot spring-boot-starter-thymeleaf

Spring Initializer를 사용하여 Spring Boot 프로젝트를 생성하는 과정을 설명합니다.

Spring 웹 도구인 Spring Initializr를 사용하면 프로젝트의 세부 정보를 제공하여 몇 단계를 거쳐 Spring Boot 프로젝트를 생성할 수 있습니다.

  1. Spring intializr로 이동하여 입력 필드를 채우십시오.
  2. 생성 버튼을 클릭하면 프로젝트 다운로드가 시작됩니다.
  3. zip 파일에서 다운로드한 프로젝트의 압축을 풀고 IDE에서 엽니다. IDE에서 파일->새로 만들기-> 기존 소스의 프로젝트->Spring-boot-app으로 이동한 다음 pom.xml 파일을 선택합니다. 프로젝트가 동기화되도록 변경 사항 가져오기 프롬프트를 클릭합니다. 그런 다음 application.properties 파일로 이동하여 server.port 번호를 server.port=7000 으로 편집하는 것을 잊지 마십시오.
  4. 이제 src->main->java->com.gfg.Spring.boot.app 에서 애플리케이션을 실행합니다.

스프링 부트에서 JPA란 무엇입니까?

이것은 ORM(Object-Relation Mapping)을 사용하여 관계형 데이터를 관리하고 Java 객체 또는 Java 클래스와 응용 프로그램의 관계형 데이터베이스 간의 데이터에 대한 액세스를 허용하는 Java 사양입니다.

JPA는 플랫폼 독립적인 객체 지향 쿼리 언어인 JPQL(Java Persistent Query Language)을 사용합니다.

JPA는 제공하는 Entity Manager API를 사용하여 데이터베이스에 대한 쿼리 처리 및 개체 트랜잭션을 허용합니다.

Spring Boot에서 자동 구성이란 무엇입니까?

자동 구성은 애플리케이션에 추가한 jar 종속성을 사용하여 Spring Boot 애플리케이션 구성을 자동화하려고 합니다.

애플리케이션의 클래스 경로에서 사용 가능한 종속성에 따라 자동 구성은 JPA 및 스프링 보안을 포함한 스프링 특정 모듈의 내장 객체를 선언합니다.

스프링 어노테이션이란?

Spring 주석은 프로그램 스니펫에 대한 정보를 제공하는 메타데이터를 참조하고 해당 프로그램에 추가 데이터를 추가합니다. 클래스 및 메서드를 포함한 코드 구성 요소는 종종 주석과 연결됩니다.

주석은 프로그램의 작업이나 컴파일된 코드의 후속 작업에 직접적인 영향을 미치지 않습니다.
구문은 ' @ ' 기호로 시작합니다.

Spring Boot는 다음을 포함하는 6가지 주요 주석 유형을 제공합니다.

  • 스프링 코어 주석
  • 스프링 데이터 주석
  • 스프링 빈 주석
  • 스프링 웹 어노테이션
  • 스프링 스케줄링 주석
  • 스프링 부트 주석

Spring Data REST는 무엇을 의미합니까?

Spring Data REST는 최소한의 코드를 사용하여 Spring Data Resources 주변의 RESTful 리소스를 노출합니다.

다음 예제에서는 POST 메서드를 사용하여 http://localhost/example 을 URL로 사용하고 Content-Type: application/json 을 헤더로 사용하여 콘텐츠를 요청합니다.

콘텐츠 요청:

 { "name": "Jimmy", "Gender": "Male", "Age": 23 }

응답 내용:

 { "name": "Jimmy", "Gender": "Male", "Age": 23 "_links": { "self": { "href": "http://localhost:8080/example/1" }, "person": { "href": "http://localhost:8080/example/1" } } }

Spring Boot DevTools가 필요한 이유는 무엇입니까?

이들은 개발을 더 쉽게 만들고 개발 시간을 절약하기 위해 속성이 각 개발 환경에 적용되는 사전 정의된 도구 세트입니다.

Spring Boot 애플리케이션에서 코드를 변경할 때마다 Spring Boot DevTools 기능이 자동으로 다시 시작됩니다. 따라서 코드를 변경할 때마다 애플리케이션을 수동으로 다시 시작해야 하는 수고를 덜어줍니다.

스프링 데이터란?

Spring 데이터는 기본 데이터 저장소의 특별한 특성을 계속 유지하므로 개발자가 관계형 및 비관계형 데이터 및 클라우드 기반 데이터 서비스와 같은 데이터 액세스 기술에 쉽게 액세스할 수 있도록 합니다.

빈이 존재할 때 자동 구성에 뒤로 물러나도록 지시하는 방법은 무엇입니까?

여기에서는 다음과 같이 name 및 value 속성을 포함하는 @ConditionalOnMissingBean 주석을 사용합니다.

  • value 속성은 확인할 빈 유형을 저장합니다.
  • 확인할 빈의 이름을 지정하는 name 속성

Spring Boot에서 데이터베이스에서 데이터를 가져오는 방법은 무엇입니까?

다음 단계를 사용하여 MySQL 데이터베이스에서 Spring Boot 애플리케이션으로 데이터에 액세스할 수 있습니다.

1단계: create DATABASE person 명령을 사용하여 MySQL에 데이터베이스를 생성합니다.

2단계: 데이터베이스 내에서 테이블을 생성합니다.

 CREATE TABLE person(id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(255));

3단계: 이제 Spring Boot 애플리케이션을 생성한 다음 여기에 JDBC, MySQL 및 필요한 웹 종속성을 추가합니다.

4단계: 아래와 같이 application.properties 파일에서 데이터베이스를 구성합니다.

 spring.datasource.url=jdbc:mysql://localhost:3306/personDetails spring.datasource.username=example123 spring.datasource.password=example123 spring.jpa.hibernate.ddl-auto=create-drop

5단계: 다음으로 컨트롤러 클래스에서 요청을 처리해 보겠습니다.

 package com.person; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.RestController; @RestController public class JdbcController { @Autowired JdbcTemplate jdbc; @RequestMapping("/save") public String index(){ jdbc.execute("insert into person (name)values(Trial)"); return "Name entered Successfully"; } }

마지막으로 데이터베이스 항목을 확인하면서 애플리케이션을 실행하여 액세스한 데이터를 확인합니다.

스프링 프로파일이 필요한 이유는 무엇입니까?

Spring Profiles는 서로 다른 부분의 애플리케이션 구성의 분리를 허용하고 특정 개발에 사용할 수 있습니다.

또한 Spring Profiles는 Spring Profiles를 사용할 수 없는 경우 개발자가 환경별 외부 구성을 관리하는 수고를 덜어줍니다.

또한 이는 동기화를 유지하기 어렵게 만들고 특정 환경별 매개변수에 따라 특정 필수 항목을 사용할 수 있는 여러 공장과 유사한 구성 요소를 작성해야 한다는 추가 필요성을 의미합니다.

Spring 부트에서 임베디드 Tomcat 서버의 포트를 변경할 수 있습니까?

그래 우리는 할 수있어.

이것은 server.port 속성을 포함하도록 application.properties 파일을 조작하고 선택한 포트를 할당하여 수행됩니다. Spring Boot는 애플리케이션 속성 파일을 자동으로 로드하고 필요한 구성을 애플리케이션에 적용합니다.

예를 들어 server.port 번호를 기본값 8080에서 server.port= 8081 로 변경할 수 있습니다.

로깅을 위해 Log4j를 어떻게 구성합니까?

이 몇 가지 간단한 단계를 통해 로깅을 위해 Log4j를 구성할 수 있습니다.

  1. 먼저 Java 프로젝트를 만든 다음 프로젝트를 마우스 오른쪽 버튼으로 클릭합니다. MyEclipse->파일->새로 만들기->Java 프로젝트 로 이동하여 프로젝트 이름을 지정하고 마침을 클릭합니다.
  2. 그런 다음 Java 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 빌드 경로 -> 빌드 경로 구성을 선택합니다. 이 단계에서는 log4j 파일을 추가합니다.
  3. 라이브러리로 이동하여 외부 JARS 추가 버튼을 클릭하고 나타나는 드롭다운 메뉴에서 log4j 파일을 선택합니다. 그런 다음 확인을 클릭합니다.
  4. log4j.properties 파일을 호출할 새 Java 파일을 작성한 다음 완료를 클릭하고 이 파일을 클래스 경로에 추가하십시오.
  5. 클래스 경로에서 고급을 클릭한 다음 폴더 추가 옵션 을 선택하고 확인을 클릭하는 것을 잊지 마십시오.
  6. 이제 log4j.properties 파일을 검색하고 확인을 클릭하고 프로젝트를 실행할 수 있습니다.
  7. 콘솔에서 아래 출력을 확인하십시오.
 [main] DEBUG Example – Hello this is a debug message [main] INFO Example – Hello this is an info message

IoC 컨테이너란 무엇입니까?

IoC(Inversion of Control) 컨테이너는 종속성 주입을 자동으로 구현하는 핵심 Spring 컨테이너입니다. 클래스의 응용 프로그램을 인스턴스화하고 필요한 종속성의 개체 구성 및 조합을 담당합니다.

또한 인스턴스화에서 소멸까지 개체의 수명 주기를 관리합니다.

IoC는 Java 코드, XML 및 Java 주석의 메타데이터 구성을 사용하여 이러한 작업을 수행합니다.

컨테이너는 Java 개체와 이러한 개체의 수명 주기를 제어하기 때문에 Inversion of Control이라고 합니다. 그렇지 않으면 이것은 개발자의 작업입니다.

Maven을 사용하여 Spring Boot 애플리케이션을 만드는 방법을 설명합니다.

이 프로세스에는 일련의 단계가 수반됩니다.

1단계: 프로젝트 유형을 선택합니다.

2단계: 구성할 프로젝트의 이름을 지정한 다음 완료 버튼을 클릭하여 프로젝트를 생성합니다.

3단계: 이제 Maven 프로젝트에서 pom.xml 파일을 구성하여 Spring Boot 프로젝트를 생성합니다.

pom.xml 파일:

 <project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.javatpoint</groupId> <artifactId>spring-boot-example</artifactId> <version>0.0.1-SNAPS<name>JavaTpoint Spring Boot Example</name> </project>

구성에는 Maven 프로젝트에 상위 항목을 추가하는 작업이 포함됩니다. 이것은 Maven 프로젝트를 상위 프로젝트에 대한 하위 프로젝트로 선언합니다.

 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.2.RELEASE</version> </parent>

4단계: 다음으로 웹 종속성 spring-boot-starter-web을 pom.xml에 추가합니다.

 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>

5단계 : 프로젝트의 Java 버전을 추가합니다.

 <properties> <java.version>1.8</java.version> </properties>

6단계: 새 종속성을 추가할 때마다 Maven 프로젝트를 업데이트해야 합니다.

7단계: src/main/java 패키지 내에서 Java 클래스를 생성하여 Maven 프로젝트를 실행 가능하게 만듭니다.

8단계: 다음으로 Spring 애플리케이션의 클래스 정적 실행 메소드를 호출합니다.

9단계: 마지막으로 클래스를 Java 애플리케이션으로 실행합니다.

Spring에 비해 Spring Boot의 장점은 무엇입니까?

  • 부트스트래핑이라고 하는 기술인 부트 이니셜라이저를 사용하여 소스 언어를 컴파일하는 Spring Boot의 부트스트랩 기능은 사용자 장치의 공간 절약을 허용하고 애플리케이션의 로드 시간도 줄여줍니다.
  • Spring Boot는 Spring과 달리 부모 POM(parent object model)이나 XML 파일에 의존하지 않고 spring-boot-dependencies를 추가한 후 의존성 관리가 가능하다.
  • 또한 Spring Boot를 통해 개발자는 XML 구성을 사용할 필요 없이 주석 또는 XML 구성을 사용할 수 있습니다.
  • 개발자는 애플리케이션을 설정하는 데 필요한 상용구 코드가 감소한 Spring Boot를 선호합니다. 이것은 Spring Boot가 인메모리 데이터베이스와 임베디드 Tomcat 서버와 함께 제공되어 상용구 코드를 줄이기 때문입니다. 반면에 Spring에는 더 많은 상용구 코드가 있습니다.
  • Spring Boot는 WAR(Web Application Resource) 파일이 반드시 필요한 것은 아니며 JAR(Java Resource)에만 의존할 수 있는 작고 단순한 구조를 가지므로 사용자와 개발자에게 더 유용합니다.
  • Spring Boot는 또한 Tomcat 및 Jetty와 같은 서버를 자동으로 포함합니다. 따라서 개발자는 Spring에서 해야 하는 것처럼 수동으로 서버를 설정할 필요가 없습니다.

Spring Boot에서 페이지 매김을 수행하는 방법은 무엇입니까?

페이지 매김 프로세스는 리소스를 절약하기 위해 데이터를 섹션으로 나눕니다. 여기에는 페이지 크기와 페이지 번호라는 두 개의 필드가 포함됩니다.

이 프로세스에는 다음을 포함한 몇 가지 단계가 포함됩니다.

1단계: 초기 설정
구성 엔티티를 도메인 클래스로 Person이라는 이름을 지정합니다.

 @Entity public class Person { @Id private long id; private String name; }

2단계: 리포지토리 생성
다음으로 PersonRepository extends PagingAndSortingRepository 를 사용하여 각각 페이징 및 정렬을 위한 findAll(Pageable pageable ) 및 findAll(Sort sort) 메서드를 가져올 수 있습니다.

 public interface PersonRepository extends PagingAndSortingRepository<Person, Integer> { List<Product> findAllByPrice(double price, Pageable pageable); }

3단계: 페이지 매김 단계
여기에서 첫 번째 단계는 PageRequest 객체를 만드는 것입니다. Pageable 인터페이스를 구현하는 요청에 따라 페이지 번호와 페이지 크기를 전달합니다.

 Pageable firstPageWithTwoElements = PageRequest.of(0,2); Pageable secondPageWithThreeElements = PageRequest.of(1,3);

그런 다음 이 PageRequest 객체를 리포지토리 메서드에 매개변수로 전달합니다.

 Page<Person> allProducts = personRepository.findAllByPrice(findPageWithTwoElements); List<Items> allTwoDollarItems = itemsRepository.findAllByPrice(2, secondPageThreeElements)

기본적으로 findAll(Pageable pageable) 메서드는 Page<T> 개체를 반환합니다.

사용자 지정 자동 구성을 등록하는 방법 설명

@EnableAutoConfiguration 키 META-INF/spring.factories 파일에서 정규화된 이름을 언급합니다. 이 단계에서는 자동 구성 클래스를 등록합니다.

 org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.baeldung.autoconfigure.CustomAutoConfiguration

Maven을 사용하여 프로젝트를 빌드하려면 파일을 resources/META-INF 디렉토리에 배치해야 합니다.

Spring Boot에서 부트스트래핑이란 무엇입니까?

부트스트래핑은 시작 시 Spring Boot 애플리케이션에서 로직을 실행하는 프로세스입니다.
Boot initializr는 Spring Boot에서 소스 언어를 컴파일합니다. 이 프로세스는 장치 공간을 절약하고 응용 프로그램의 로딩 시간도 줄여줍니다.

마지막 단어

글쎄요, 이 기사에서는 면접관이 면접 중에 여러분에게 물어볼 몇 가지 Spring Boot 질문과 자신 있게 답변하는 데 도움이 되는 답변을 다뤘습니다. 당신이 그 꿈의 직장에 도착하기를 바랍니다!

Java 인터뷰 중 질문에서 몇 가지 관련 팁을 배우고 싶을 수도 있습니다.

행운을 빌어 요!