<배경지식>

HyperText Transfer Protocol(http)

통신을 하기 위한 규약이라는 뜻으로 애플리케이션 레벨의 네트워크 프로토콜이다.

사용자는 브라우저라는 클라이언트를 통해 서버에 HTTP요청을 전송할 수 있다. 서버는 그 요청의 결과인 HTTP응답을 브라우저에 렌더링(화면에 디스플레이)한다.

Request / Response (요청 / 응답)

Javascript Object Notation(JSON)

JSON이란 오브젝트를 표현하기 위한 문자열이다. (오브젝트란 메모리상에 존재하는 어떤 자료구조이다.)

저장하기 위해 또는 전송하기 위해 메모리상의 오브젝트를 다른 형태로 변환하는 작업을 직렬화라고 한다.
여기서 어떤 형태로 오브젝트를 직렬화할 것인가에 대한 질문만 남는다. 이에 대한 해답이 JSON이다. JSON은 키-값(key-value)의 형태로 오브젝트를 표현한 문자열이다.

{
	"firstName": "Kang",
	"lastName": "jaehyeok",
	"email": "jaehuek@gmail.com"
}

웹 서버

정적 웹서버

HTTP 서버 중에서도 리소스 파일을 반환하는 서버를 의미한다.
클라이언트가 웹서버에 요청을 하면 서버는 해당 HTML파일에 아무 작업도 하지 않고 그대로 반환한다.

동적 웹서버

동적 웹 서버는 요청을 처리한 후, 처리한 결과에 따라 응답 바이를 재구성하거나 HTML 템플릿 파일에 결과를 대체해 보낸다.

자바 서블릿 컨테이너/엔진

서블릿 컨테이너 또는 서블릿 엔진은 서버 프로그램이다.

개발자들은 서블릿 엔진을 설치한 후, 본인이 개발한 클래스 파일과 해당 클래스 파일이 어느 요청에서 실행해야 하는지 알려줘야 한다. 이때 서블릿 엔진이 이해할 수 있는 형태로 클래스 파일을 작성해야 한다.
서블릿 엔진이 이해할 수 있는 클래스란 javax.servlet.httpHttpServlet의 상속받는 서브 클래스를 의미한다.

이렇게 개발자는 서블릿 엔진을 이용해 서버를 처음부터 구현하지 않고도 각기 다른 비즈니스 로직을 구현하고 배포할 수 있다.

백엔드 개발 환경 설정

스프링 프레임워크
스프링이란 오픈 소스의 경량 프레임워크이다. 프레임워크란 코드로, 개발자들이 확장해서 사용할 수 있는 코드를 뜻한다.

의존성 주입

의존성 주입이란 이 클래스가 의존하는 다른 클래스들을 외부에서 주입시킨다는 뜻이다.
이를 구현하는 방법으로는 생성자를 이용해 주입하는 방법과 Setter를 이용해 주입하는 방법이 있다.
의존성 주입을 아주 전문적으로 해주는 것이 의존성 주입 컨테이너이고 이 중 하나가 바로 스프링 프레임워크이다.

스프링 프레임워크를 이용하면 어노테이션, XML, 자바코드를 이용해 오브젝트(빈(Bean)) 사이의 의존성을 명시할 수 있다.

@Autowired
자동으로 필요한 의존 객체의 “타입"에 해당하는 빈을 찾아 주입한다.

@Bean
오브젝트가 어디서,어떻게 사용하는지 정확히 알아야할 때, @Component를 사용하지 못할 때
이 어노테이션을 사용해 직접 관리해준다.

@ComponentScan
베이스 패키지와 그 하위 패키지에서 @Component가 달린 클래스를 찾는다.

@Component
스프링에게 이 클래스를 자바 빈으로 등록시키라고 알려준다.

Gradle

Gradle은 빌드 자동화 툴이다. 빌드 자동화 툴을 이용하면 컴파일, 라이브러리 다운로드, 패키징, 테스팅 등을 자동화할 수 있다. 자동화는 반복 작업을 줄여준다.

build.gradle

  • group은 보통 애플리케이션을 배포하기 위해 사용된다.
  • version은 이 프로젝트의 버전이다.
  • Lombok은 롬복 어노테이션을 추가하면 컴파일 시 그에 상응하는 코드를 만들어주는 라이브러리이다.
  • Repository는 gradle이 라이브러리를 다운로드 하는 곳을 의미한다.
  • Dependency는 사용할 라이브러리를 명시하면 gradle이 Repository에서 라이브러리를 다운 및 설치한다.
  • Test는 테스트에 관련된 설정을 할 수 있다.

PostMan

REST API를 테스트하기 위한 툴이다.

스프링 부트 애플리케이션을 실행하고 포스트맨을 이용해 요청을 날려보았다.
아직 설정을 안해줘서 저 반환이 나오는 것이 맞다.

0개의 댓글