스프링부트 스터디 1주차. 문제
1)도메인이 myapp.example.com이고 애플리케이션 이름이 taskmanager라면, 다음 중 관례적으로 컨트롤러 패키지 이름으로 쓰이는 것은 무엇인가?
① com.example.myapp.taskmanager.controller
② com.taskmanager.example.myapp.controller
③ example.myapp.taskmanager.controller
④ myapp.example.com.taskmanager.controller
2) Lombok은 Java에서 반복적인 코드를 줄이기 위해 사용되는 라이브러리입니다. 다음 중 Lombok을 사용했을 때 얻을 수 있는 주요 이점으로 적절한 것을 고르시오.
① 모든 메서드를 자동으로 비동기로 변환해 준다.
② 클래스의 필드에 대한 getter, setter, toString 메서드 등을 자동으로 생성해 준다.
③ 데이터베이스와의 연결을 자동으로 설정해 준다.
④ 애플리케이션 실행 속도를 향상시켜 준다.
3)아래는 2단원에서 진행한 파일의 잔체구조도이다.
각 파일의 역할에 대해 설명이 주어졌습니다. 해당 설명과 가장 적절한 파일 이름을 연결하세요.
설명:
_Spring Boot 애플리케이션의 진입점(Entry Point)으로, main 메서드를 포함하고 있다.
ㅡ클라이언트 요청을 처리하며, 특정 경로에 매핑된 로직을 담당하는 컨트롤러 클래스이다.
ㅡ컨트롤러가 반환하는 데이터를 전달하기 위한 객체를 정의한 DTO(Data Transfer Object) 클래스이다.
ㅡSpring Boot 설정값을 정의하는 파일로, 서버 포트나 데이터베이스 정보를 설정한다.
ㅡ컨트롤러의 동작을 테스트하는 단위 테스트 클래스이다.
파일 목록:
① HelloController.java
② application.properties
③ HelloControllerTest.java
④ HelloResponseDto.java
⑤ Application.java
4)@SpringBootApplication 어노테이션의 역할은 무엇인가?
① 스프링 부트 애플리케이션의 시작점을 정의한다.
② 데이터베이스 연결 설정을 자동으로 구성한다.
③ REST API 경로를 매핑한다.
④ 스프링 MVC를 활성화한다.
5) HelloControllerTest.class에서 사용하는 MockMvc의 주된 목적은 무엇인가?
① 데이터베이스 쿼리 실행을 테스트하기 위해 사용된다.
② 실제 서버를 실행하지 않고 컨트롤러의 동작을 테스트하기 위해 사용된다.
③ 애플리케이션의 전체 라이프사이클을 테스트하기 위해 사용된다.
④ 응답 데이터를 JSON으로 변환하기 위해 사용된다.
6)스프링 부트의 기본 내장 WAS(Web Application Server)는 무엇이며, 이를 사용하는 주요 이점은 무엇인가?
① Tomcat, 외부 WAS 설정 없이 애플리케이션을 실행할 수 있다.
② Jetty, 애플리케이션의 실행 속도가 빨라진다.
③ Undertow, 메모리 사용량이 감소한다.
④ Netty, 네트워크 성능이 개선된다.
7)@Autowired 어노테이션에 대한 설명으로 올바른 것을 고르세요.
① @Autowired는 Spring 애플리케이션에서 객체를 수동으로 생성할 때 사용된다.
② @Autowired는 객체를 자동으로 생성하여 의존성 주입을 수행하는 어노테이션이다.
③ @Autowired는 오직 필드에만 사용할 수 있으며, 생성자나 setter에는 사용할 수 없다.
④ @Autowired는 의존성 주입을 받을 객체가 존재하지 않으면 컴파일 에러를 발생시킨다.
- ① com.example.myapp.taskmanager.controller
관례적으로 패키지 이름은 도메인 이름을 역순으로 사용하며, 애플리케이션 구조와 연관성을 포함합니다. - ② 클래스의 필드에 대한 getter, setter, toString 메서드 등을 자동으로 생성해 준다.
Lombok은 반복적인 코드를 줄이는 데 도움을 주며, @Getter, @Setter, @ToString 등의 어노테이션을 제공합니다. - 파일 이름과 역할 매칭
- Spring Boot 애플리케이션의 진입점: ⑤ Application.java
- 클라이언트 요청을 처리하는 컨트롤러 클래스: ① HelloController.java
- 데이터를 전달하기 위한 DTO 클래스: ④ HelloResponseDto.java
- Spring Boot 설정값을 정의하는 파일: ② application.properties
- 컨트롤러 동작을 테스트하는 단위 테스트 클래스: ③ HelloControllerTest.java
- ① 스프링 부트 애플리케이션의 시작점을 정의한다.
@SpringBootApplication은 여러 설정 어노테이션(@Configuration, @EnableAutoConfiguration, @ComponentScan)을 포함하여 애플리케이션 시작을 구성합니다. - ② 실제 서버를 실행하지 않고 컨트롤러의 동작을 테스트하기 위해 사용된다.
MockMvc는 컨트롤러 계층을 테스트할 때, WAS를 실행하지 않고 요청 및 응답을 시뮬레이션합니다. - ① Tomcat, 외부 WAS 설정 없이 애플리케이션을 실행할 수 있다.Spring Boot는 Tomcat을 기본 내장 WAS로 사용하며, 별도의 설정 없이 실행 가능한 애플리케이션을 제공합니다.
- ② @Autowired는 객체를 자동으로 생성하여 의존성 주입을 수행하는 어노테이션이다.