윤준영, 더불어 성장하는 개발자    카테고리    태그

4주차 강의 복습

웹의 기본 구조

  • 웹은 서버와 클라이언트가 서로 통신하며 데이터를 주고받음
    • 클라이언트 : 서비스를 사용하는 컴퓨터
    • 서버 : 서비스를 제공하는 컴퓨터
    • 서비스 : 컴퓨터 네트워크에서 클라이언트와 서버 간의 상호 작용을 통해 제공되는 기능
  • 서버와 클라이언트가 서로 데이터를 주고 받을 때 사용하는 규약 중 하나가 HTTP

HTTP

  • 서버와 클라이언트 간 HTML 문서를 교환하기 위해 만들어진 통신규약
  • HTTP는 Stateless 특성을 가짐
    • Stateless 특성은 서버가 클라이언트의 상태를 서버에서 따로 저장하지 않는다는 뜻

HTTP - Request

  • HTTP Request 메시지는 크게 세부분으로 구성
  • Start Line
    • HTTP Method ex) POST, GET, PUT
    • Request target : 목표 URL
    • HTTP Version
  • Headers
    • Request에 대한 추가 정보를 담음
    • ex) HOST, User-Agent, Accept, Connection, Content-Type, Content-Length
  • Body
    • Request의 실제 내용을 담음

HTTP - Response

  • HTTP Response 메시지는 크게 세부분으로 구성
  • Status Line
    • ex) HTTP Version, Status Code(202, 404...), Status Text("OK", "Not Found"...)
  • Headers
    • Request에 대한 추가 정보를 담음
    • ex) HOST, Server Header, Accept, Connection, Content-Type, Content-Length
  • Body
    • Response의 실제 내용을 담음

스프링 부트

  • 기존의 스프링은 엔터프라이즈(대규모 환경)급 개발을 편리하게 만들어주는 오픈소스 프레임워크
  • 스프링은 기능이 많은 만큼 설정이 복잡함
  • 따라서, 스프링의 설정을 단순화하여 보다 편리한 환경을 구축하기 위해 스프링 부트 사용

스프링 부트의 특징

의존성 관리

  • 기존의 스프링은 개발에 필요한 각 모듈의 의존성을 직접 설정해야함
  • 스프링 부트에서는 Spring-boot-starter을 제공하여 각 라이브러리의 기능과 관련해서 자주 사용되고 호환되는 버전을 자동으로 제공함

자동 설정

  • 기존 스프링의 기능을 사용하기 위해 자동 설정 기능 지원
  • 개발자가 추가한 라이브러리를 실행하는데 필요한 환경 설정을 알아서 찾고 관리해줌

내장 WAS

  • 기본적으로 Tomcat WAS 내장
  • 스프링 부트가 웹 서버 자체인 것은 아니고 내장된 웹 서버를 구동할 뿐

Bean

  • 기존의 Java에서는 클래스를 생성한 후 이를 생성자로 생성한 후에 사용하였음
  • 하지만 스프링에서는 개발자가 직접 생성자를 호출하는 형태가 아닌 스프링에 의해 관리당하는 자바 객체 빈을 사용

제어의 역전(IOC)

  • 스프링 컨테이너가 필요에 따라 개발자 대신 빈들을 관리 및 제어해주는 행위
  • 개발자는 단지 빈을 등록하면, 스프링 내에서 알아서 생명주기 관리 및 의존성 주입을 자동으로 하게 됨
    • 의존성 주입 : 스프링 내에서 자동으로 어떤 객체에 의존성을 맺어주는 행위

@SpringBootApplication 어노테이션

  • 서비스 내에 하나만 존재하며, 아래의 기능을 실행하기 위해 사용

@SpringBootConfiguration

  • 해당 클래스가 어플리케이션의 구성을 정의한다는 것을 나타냄

@EnableAutoConfiguration

  • 사전에 정의한 라이브러리들을 Bean으로 등록해주는 어노테이션

@ComponentScan

  • @component, @Service, @Repository, @Controller 등의 어노테이션을 스캔하여 Bean으로 등록해주는 어노테이션

Lombok

  • 자바에서 반복된 코드 작성을 줄이기 위한 프로젝트
  • 어노테이션을 사용하여 작업을 자동화함

Lombok Annotations

  • @Getter, @Setter : 기존에 get 메소드, set 메소드를 일일히 작성하는 것이 아닌 개발자가 변수 선언만 하면 컴파일러 내에서 자동으로 get, set 메소드를 생성함
  • @NoArgsConstructor : 매개변수가 없는 기본 생성자를 자동으로 생성해 줌
  • @AllArgsConstructor : 모든 필드를 매개변수로 받는 생성자를 자동으로 생성해 줌

Apple PencilKit Framework에 대한 고찰

5주차 강의 복습

Comments powered by Disqus.

바로가기