그루비(Groovy)를 기반으로 한 빌드 도구이며, 빌드 자동화 시스템이라고 보면 된다.
Java 코드를 설정에 맞게 빌드해준다.
Gradle을 사용하면 Java 소스코드를 실행 가능한 jar 파일로 만들어준다.
Gradle 기반의 빌드 스크립트이다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.1'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'org.sparta'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
소스 코드를 빌드하고 라이브러리들의 의존성을 쉽게 관리할 수 있다.
즉, 개발에 필요한 외부 라이브러리들을 dependencies 부분에 작성만 하면 자동으로 관리해주어서 라이브러리들 간의 충돌 없이 개발에 집중할 수 있게 된다.
Net과 Work의 합성어로 컴퓨터와 같은 노드들이 통신 기술을 통해 그물망처럼 연결되어 통신을 하는 형태
데이터 및 리소스를 송신, 교환 또는 공유하기 위한 목적으로 케이블(유선) 또는 WiFi(무선)로 연결된 2개 이상의 컴퓨터로 구성
서로 정보를 주고 받기 위해서 IP 주소, 서브넷 마스크, 게이트웨이 등의 정보를 설정 후 네트워크 프로토콜을 이용하여 통신을 한다.
네트워크 용어
IP 주소 : 통신을 위한 인터넷 프로토콜을 사용하는 네트워크에 연결된 모든 디바이스에 할당된 고유 번호
프로토콜 : 컴퓨터가 다른 컴퓨터와 통신하는데 필요한 장비가 서로 통신을 위해 정해놓은 통신 규약
포트 : 네트워크 디바이스 간의 특정 연결 식별
웹 브라우저와 같은 클라이언트에서 HTTP 프로토콜로 요청을 받아 HTML 문서 등과 웹 페이지를 응답해주는 소프트웨어
웹 서버의 기본 동작 원리
브라우저를 통해 HTTP Request 요청을 웹 서버에 보낸다.
웹 서버는 그에 대한 요청을 내부적으로 처리한 뒤에 처리한 데이터의 결과를 HTTP Response 응답을 통해 브라우저에 보낸다.
브라우저는 응답 받은 데이터를 가지고 브라우저에 그려낸다.
API(Application Programming Interface)의 약자로 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 의미한다.
통신 하기 위한 규칙이므로 "약속" 이라고 생각하면 된다.
Interface : 컴퓨터 시스템끼리 정보를 교환하는 공유 경계를 의미한다.
API를 통해 해당 프로그램을 활용할 때, 도움을 주는 매개체 역할이라고 생각하면 된다.
Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍쳐이다.
이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것이 목적이다.
일관적인 컨벤션을 통한 API의 이해도와 호환성을 높이는 것이 주 목적이다.
Web Server
브라우저에서 URL을 입력하여 어떤 페이지를 요청했을 때, HTTP의 요청을 받아서 HTML문서와 같은 정적 컨텐츠를 전달해주는 역할이 Web Server이다.
이미 완성되어 있는 HTML과 같은 문서를 브라우저에 전달한다.
동적인 요청에 대해 서버 자체적으로 처리하기 어렵다.
Web Application Server (WAS)
Web Server가 처리하지 못하는 기능 대부분을 해준다.
Tomcat은 동적인 처리를 할 수 있는 웹 서버를 만들기 위한 웹 컨테이너이다.
Apcahe Tomcat이란 Apache와 Tomcat이 합쳐진 형태로 정적, 동적 데이터를 효율적으로 처리해줄 수 있다.
데이터를 주고 받는 양식을 정의한 통신 규약 중 하나
웹 브라우저 (클라이언트)가 서버에게 Request 요청을 보내면 서버는 그에 대한 정보를 처리하여 Response에 응답 결과 데이터를 담고 브라우저에 보낸다.
Request 요청 메세지에는 GET Method를 통해 호출 / 요청 방식을 사용한다.
Method 호출 방식
서버가 응답을 보낼 때, Payload (실제 데이터)를 항상 보낸다.
클라이언트는 요청할 때도 Payload를 보낼 수 있긴 하다.
GET 메서드를 제외하곤 모드 Payload를 보낼 수 있는 것이 HTTP에서의 약속이다.
Lombok은 메서드/생성자 등을 자동으로 생성해줌으로 코드를 절약할 수 있도록 도와주는 라이브러리이다.
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@RequiredArgsConstructor
public class Test {
private String username;
private final String testName;
}
클래스 이름 위에 어노테이션을 부여하여 사용한다.
@Getter
@Setter
@AllArgsConstructor
public class Test {
private String username;
private String contents;
}
public Test(String username, String contents) {
this.username = username;
this.contents = contents;
}
@AllArgsConstructor
@NoArgsConstructor
public class Test {
private String username;
private String contents;
}
public Test() {
}
@NoArgsConstructor
@RequiredArgsConstructor
public class Test {
private final Calculator calculator;
private final String username;
private String contents;
}
public Test(Calculator calculator, String username) {
this.calculator = calculator;
this.username = username;
}
@RequiredArgsConstructor
Spring과 관련된 설정을 할 때 사용되는 파일이다.
스프링부트를 사용하면 개발에 필요한 설정 정보들이 기본 설정으로 자동으로 되어있는데, application.properties를 통해 설정값을 쉽게 변경할 수 있다.
또한 DB 연결 시 DB의 정보를 제공할 때, 이 파일을 이용하여 쉽게 값을 전달할 수 있다.