- 프로젝트의 전체적인 부분보다는 어려운 내용 중점적으로 블로깅할 계획입니다.

 

 

application.properties

내장 서버를 띄울 때 사용할 포트와 application 이름을 네이밍 할 수 있습니다.

 

* 포트는 따로 설정하지 않으면 8080이며, 80포트는 url 뒤에 포트 번호를 생략할 수 있습니다.

 

* applictaion.yml

application.properties 파일과 비교했을 때, 들여쓰기를 통해 설정 값들을 계층 구조로 관리할 수 있어서
가독성이 좋다는 장점이 있습니다.
하지만 문법이 엄격해진다는 단점이 있습니다. 예를 들어, 콜론 다음에 공백이 있는 경우에 동작하지 않습니다.
그래서 스터디에서는 원활한 진행을 위해 얌파일을 사용하지 않았습니다.

 

 

 

@RestController

Restful Web API를 좀 더 쉽게 만들기 위해 도입된 기능입니다.

그래서 아래에 Restful 웹서비스에 대한 설명을 적어 놓도록 하겠습니다.

 

@Controller , @ResponseBody 를 합쳐놓은 어노테이션입니다.

 - @Controller : 요청을 처리하는 컨트롤러
 - @ResponseBody : 자바 객체를 HTTP 응답 본문의 객체로 변환해 클라이언트에 전송합니다.
                       이를 통해 html파일을 만들지 않아도 웹 페이지에 문자열을 출력할 수 있습니다.

 

 

 

Restful 웹서비스

REST 방식의 웹 서비스를 쉽게 이해하기 위해 어떤 메시지를 주고 받게 되는지 동작 아키텍쳐를 살펴보겠습니다.

 

[ 일반적인 웹 서비스 ]

 

[ REST 방식의 웹 서비스 ]

 

REST 방식을 이용하면 복잡한 SOAP 메시지를 호출하지 않아도 URL을 이용해 데이터를 요청합니다.

위 그림을 보면 12133 이라는 URL 을 통해 데이터를 요청하고, 그 데이터는 XML 형식으로 반환됩니다.

즉, url 을 통해 데이터를 요청하면 아래의 소스코드가 나타납니다.

 

[ 반환 데이터 ]

 

그러면 여기서 REST의 특징을 알 수 있습니다.

  1. 레스트 방식의 웹서비스는 잘 정의된 url로 리소스를 표현
  2. 세션을 쓰지 않는다.
- 세션을 쓰지 않는다는 것은?
기존의 서블릿 개발에선 세션을 이용해 인증 정보를 가지고 다닙니다.
개발자에 따라 피라미터가 많이 들어가기도 하기때문에 요청 처리가 아주 무거워집니다.
또한 요청 전후 관계에 관련성이 생겨 요청을 하나의 서버가 처리해야합니다.
그래서 고가의 로드 밸런싱 서버가 필요해집니다.

REST는 이러한 세션을 사용하지 않기 때문에 요청을 완벽히 독립적으로 처리합니다.
따라서 각각의 요청과 이전 요청은 관련성이 없으므로 로드밸런싱이 간단해집니다.

 

  • REST 의 디자인 표준
  1. URL로 표현가능해야함
  2. 하나의 리소스들은 주변 리소스들과 연결되어 하나의 웹페이지처럼 표현되야함
  3. 현재 클라이언트의 상태를 서버에서 관리하지 않아야함
  4. 모든 요청은 일회성의 성격으로 이전 요청과 무관해야함
  5. url에 현재 상태를 표현할 수 있으면 좋다.
  6. HTTP에서 제공하는 기본적인 4가지 메서드, 추가적인 2가지 메서드를 이용해 리소스를 동작해야함

 

 

@GetMapping

클라이언트의 요청을 처리할 URL을 매핑합니다.

예를 들어, 

@GetMapping(value = "/")
public String HelloWorld() {
	return "Hello World";
}

를 하게되면 클라이언트가 url에 ip:port/ 를 입력하면 해당 요청에 대해 "Hello World" 를 출력해줍니다.

 

 

Lombok 라이브러리

롬복 라이브러리는 초기에 스프링 부트 프로젝트를 생성할 때 디펜던시에 추가를 하거나, 직접 추가하는 방법이 있습니다.

 

pom.xml 에 아래 Dependency를 추가해줍니다.

<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
</dependency>

 

롬복 라이브러리는 편리한 기능들을 제공해주는데 아래의 에노테이션을 살펴보겠습니다.

 

@Getter/@Setter 게터/세터 메소드
@ToString toString 메소드
@NonNull NPE 예외 발생 체크
@EqualsAndHashCode equals() , hashCode() 메소드 생성
@Builder 빌더 패턴 이용한 객체 생성
@NoArgsConstructor 피라미터가 없는 기본 생성자

 

 

 

'스터디' 카테고리의 다른 글

웹 애플리케이션 구현 방식  (0) 2022.08.03
네트워크3 - URL,DNS  (0) 2022.08.02
네트워크2 - IP  (0) 2022.08.02
네트워크1 - 애플리케이션과 TCP/IP  (0) 2022.08.02
스프링 부트를 왜 사용하는가?  (0) 2022.07.27

+ Recent posts