기타/개발일기

[TIL] Gradle, Tomcat, 테스트 코드, Lombok, Spring MVC, 정적 및 동적 페이지

hu6r1s 2024. 1. 17. 20:41

Gradle

Gradle은 작성한 Java 코드를 설정에 맞게 자동으로 빌드해 주는 빌드 자동화 시스템이다.

  • Build란 소스 코드를 실행 가능한 결과물로 만드는 일련의 과정 `(java -> jar)`

build.gradle

build.gradle은 Gradle 기반의 빌드 스크립트이다.

이 스크립트를 작성하면 소스 코드를 빌드하고 라이브러리들의 의존성을 쉽게 관리할 수 있다.

 

  • 개발을 하면서 필요한 외부 라이브러리들을 `dependencies` 부분에 작성하면 Gradle이 해당 라이브러리를 Maven Repository와 같은 외부 저장소에서 자동으로 다운로드해온다.
  • 다른 라이브러리들과의 의존성을 자동으로 관리해 주기 때문에 라이브러리들간의 충동 걱정없이 개발에만 집중할 수 있다.
    • Gradle이 다운로드한 라이브러리들은 `External Libraries`에서 확인할 수 있다.

Apache Tomcat

Tomcat을 설명하기 전에 Web Server와 Web Application Server(WAS)에 대해 설명해야 할 필요가 있다.

Web Server

HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저)의 요청을 받아 HTML 문서와 같은 정적인 콘텐츠를 사용자에게 전달해주는 역할을 한다.

  1. 정적인 콘텐츠 즉, 이미 완성된 HTML 문서를 브라우저로 전달
  2. 클라이언트로부터 '로그인하영 MyPage를 요청'과 같은 동적인 요청이 들어왔을 때 웹 서버 자체적으로 처리하기 어렵기 때문에 해당 요청을 WAS에 전달

WAS

  • WAS는 웹 서버와 똑같이 HTTP 기반으로 동작한다.
  • 웹 서버에서 할 수 있는 기능 대부분을 WAS에서도 처리할 수 있다.
  • WAS를 사용하면 로그인, 회원가입을 처리하거나 게시물을 조회하거나 정렬하는 등의 다양한 로직들을 수행하는 프로그램을 동작시킬 수 있다.

Apache Tomcat

Tomcat은 동적인 처리를 할 수 있는 웹 서버를 만들기 위한 웹 컨테이너이다.

Apache Tomcat이란 Apache와 Tomcat이 합쳐진 형태로 정적인 데이터 처리와 동적인 데이터 처리를 효율적으로 해줄 수 있다.

Web Server와 WAS의 더 자세한 설명은 이 블로그를 참고하면 된다.

테스트 코드

테스트 코드는 무엇을 하는 것인지 직관적으로 보면 대충 알 것이다.

그래서 이게 왜 필요한 걸까?

  • 쉽게 말해서 `버그` 때문이다.
    • 개발을 다 끝내고 배포를 했는데, 찾지 못한 버그가 있었다? 말 다 함

이러한 테스트 코드를 작성하기 위해 `JUnit`이란 단위 테스트 프레인워크가 있다.

다 자세한 내용은 추후에 알아보겠다.

Lombok

Lombok이란 자바 프로젝트를 진행하는데 거의 필수적으로 필요한 메서드 및 생성자를 자동으로 생성하여 코드를 절약할 수 있도록 도와주는 라이브러리이다.

@Getter, @Setter

이건 자바를 사용한 사람이면 뭔지 눈치챘을 것이다. getter와 setter를 자동 생성해주는 애노테이션이다.

@AllArgsConstructor, @NoArgsConstructor

이것도 대충 눈치챘을 것이다. 생성자에 모든 필드를 파라미터로 갖는 것과 기본 생성자를 만들어 준다.

@RequiredArgsConstructor

final 제어자가 붙은 필드를 파라미터로 가진 생성자를 만들어 준다.

Spring MVC

MVC란 Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나로 각각의 역할을 분리했다.

이를 통해 코드의 `재사용성`과 `유지보수성`을 높이고, `협업`을 용이하게 했다.

Model

  • 데이터와 비즈니스 로직을 담당
  • 데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업을 수행

View

  • 사용자 인터페이스를 담당
  • 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현

Controller

  • Model과 View 사이의 상호작용을 조정하고 제어
  • 사용자의 입력을 받아 Model에 전달하고, Model의 결과를 바탕으로 View를 업데이트

Spring MVC

Spring MVC에 대한 설명은 공식 문서에 설명되어 있다.

쉽게 표현해보자면 ‘Spring에서 MVC 디자인 패턴을 적용하여 HTTP 요청을 효율적으로 처리하고 있다’ 라고 이해하시면 좋다. 자세한 설명은 따로 공부하여 포스팅하겠다.

정적 및 동적 페이지

정적 페이지

` http://localhost:8080/hello.html`하면 `static` 폴더에서 찾아서 반환해준다.

Controller를 거쳐서 HTML을 반환할 수도 있지만 이미 완성된 정적 파일을 굳이 Controller를 통해서 반환할 필요는 업다.

동적 페이지

동적 페이지는 Client의 요청을 Controller에서 Model로 처리한다.

  • DB 조회가 필요하다면 DB 작업 후 처리한 데이터를 Model에 저장한다.

Template engine(Thymeleaf)에게 View, Model을 전달한다.

그러면 View에 Model을 적용하여 동적 웹 페이지가 생성된다.

'기타 > 개발일기' 카테고리의 다른 글

Spring Boot S3에 이미지 업로드  (0) 2024.03.13
[TIL] Jackson, Controller, DTO, JDBC  (0) 2024.01.18
[TIL] 모던 자바(Java 8)  (0) 2024.01.05
[TIL] 프로세스와 쓰레드  (1) 2024.01.04
[TIL] 예외처리, 제네릭  (0) 2024.01.03