이스트캠프 Spring 퀴즈 2

📘 오늘 학습한 내용

1️⃣ Spring Boot


📝 퀴즈

🧩 퀴즈 1

Q. 컨트롤러(Controller), 서비스(Service), 레포지토리(Repository), 모델(Model) 클래스들은 각각 어느 디렉토리에 배치하나요?

📝 나의 답변:

projectRoot/src/main/java/projectPackage 하위에 controller/, service/, repository/, model/ 디렉터리를 각각 만들어서 저장합니다

✅ 피드백:

src/main/java 내에 저장한다.

추가적으로 src/main/resources/static 에는 정적 파일을 저장한다.
src/main/resources/templates/ 에는 view와 연관된 html, jsp 파일을 저장한다.

🧩 퀴즈 2

Q. 요청 URL을 특정 컨트롤러 메서드와 연결하기 위해 사용하는 어노테이션은 무엇인가요?

📝 나의 답변:

- @RequestMapping
- HTTP별 Method Mapping이 다른 이유는 같은 URL 형식이어도 요구하는 자원이나 처리하는 동작이 달라서 같습니다.

(@RequestMapping(value="/users", method=RequestMethod.GET)와 같이 사용해도 되는데 왜 굳이 HTTP 요청 Annotation을 사용하는가?)
- 공통된 자원 처리 방법을 묶고(`/users`), 각 HTTP 동작에 따른 처리를 세분화하고 가시성을 위해 사용하는 것 같습니다

✅ 피드백:

- @RequestMapping을 사용하고 HTTP 메서드에 따라 GetMapping, PostMapping, @DeleteMapping, @PatchMapping, @PutMapping 등이 있다.
- 공통된 자원 처리 방법을 묶고, 코드의 의도를 명확히 표현하여 동작에 대한 가시성을 향상시키고 유지보수를 편리하게 처리하기 위해서다. 또한 반복된 코드를 줄이고 Annotation 규격이 너무 길어지면 자원 처리에 시간이 걸리기 때문에 코드를 간결화하기 위해 사용한다.(보일러 플레이트 감소)
- Spring 4.3 이상에서 권장되는 방법이다.

🧩 퀴즈 3

Q. DispatcherServlet의 역할은?

📝 나의 답변:

클라이언트의 HTTP 요청을 처리할 Controller를 찾습니다

✅ 피드백:

HTTP 요청을 처음으로 받아서 어떤 Controller가 처리할지 전달해주는 Servlet이다.

🧩 퀴즈 4

Q. DTO와 VO의 차이점은?

📝 나의 답변:

DTO는 데이터 저장 및 전달 용도로 사용하기에 getter와 setter를 제공하지만, VO는 상수처럼 사용하는 클래스로 setter를 제공하지 않고 생성자에서 초기화한 값을 final로 사용합니다.

✅ 피드백:

DTO : 계층 간(MVC, API 응답) 데이터의 교환 목적으로 사용한다.
가변 객체로 getter와 setter를 가진다.
비즈니스 로직에 포함되지 않는다.

VO : 계산이나 비교용으로 사용하며, 값 자체를 표현하는 객체다.
불변 객체다.
생성 시에만 필드를 설정하고, 이후엔 변경할 수 없다(setter X)