웹의 기본 구조
- 웹은 서버와 클라이언트가 서로 통신하며 데이터를 주고받음
- 클라이언트 : 서비스를 사용하는 컴퓨터
- 서버 : 서비스를 제공하는 컴퓨터
- 서비스 : 컴퓨터 네트워크에서 클라이언트와 서버 간의 상호 작용을 통해 제공되는 기능
- 서버와 클라이언트가 서로 데이터를 주고 받을 때 사용하는 규약 중 하나가 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 : 모든 필드를 매개변수로 받는 생성자를 자동으로 생성해 줌
Comments powered by Disqus.