들어가며 모든 클래스의 가장 최상위 클래스인 Object 클래스가 있다. 이때 Object 클래스가 가진 메소드 중 toString이라는 메소드가 있는데 이 toString이라는 메소드는 객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴하는 메소드이다. 그렇다면 우리가 너무나도 당연하게 작성하는 아래와 같은 DTO 클래스에서 toString 메소드는 왜 만들어줄까? package com.example.put.dto; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.ArrayList; public class PutRequestDto { private String name; private int age; @JsonProper..
VO(Value Object) - 데이터 그 자체로 의미 있는 것을 담고 있는 객체이다. DTO(Data Transfer Object) - 전송되는 데이터의 컨테이너 DTO도 VO와 동일하게 데이터를 저장하여 사용한다. 다만 VO와 비교해서 다른 것은 DTO는 같은 시스템에서 사용되는 것이 아닌 다른 시스템으로 전달하는 작업을 처리하는 객체일 때 DTO라고 한다. VO/DTO에 대한 논쟁도 많고 반드시 사용 용도를 구분하는 건 무의미하다고 하니 개발팀내에서 용도를 정해서 사용하면 된다고 한다. 예를 들어 외부시스템과 데이터 통신을 할 경우에는 DTO로, DB에서 가져오는 Data는 VO로 정의해서 사용한다고 약속을 하는 식으로 말이다.
1. URI (Uniform Resource Identifier) : 인터넷에서 특정 자원을 나타내는 주소 값, 해당 값은 유일함 (응답은 다를 수 있음) 요청 : https://www.fastcampus.co.kr/resource/sample/1 응답 : fastcampus.pdf, fastcampus.docx 2. URL (Uniform Resource Locator) : 인터넷 상에서 자원 또는 특정 파일이 어디에 위치하는지 그 위치주소 요청 : https://www.fastcampus.co.kr/resource/sample/1 URL은 URI의 하위개념이다.
REST (Representational State Transfer : 자원의 상태 전달) - 네트워크 아키텍처 1. Client, Server : 클라이언트와 서버가 서로 독립적으로 분리 되어 있어야 한다. 2. Stateless : 요청에 대해서 클라이언트의 상태를 서버에 저장하지 않는다. 3. Cache : 클라이언트는 서버의 응답을 Cache(임시저장) 할 수 있어야 한다. 4. 계층화 (Layerd System) : 서버와 클라이언트 사이에, 방화벽, 게이트웨이, Proxy server 등 다양한 계층 형태로 구성이 가능해야 하며, 이를 확장할 수 있어야 한다. 이를 통해서 서버의 확장을 이룰 수 있어야한다. 5. 인터페이스 일관성 : 인터페이스의 일관성을 지키고, 아키텍처를 단순화시켜 작은 단..
1. Factory Method - 개념 : 객체 생성을 위한 인터페이스는 정의하지만, 인스턴스를 만들 클래스는 서브 클래스에서 정의한다. - 예시 : 문서 편집기에 다양한 타입의 문서(Word, PDF, Text)를 생성하는 경우 (1) 인터페이스 정의 public interface Document { void open(); void close(); } (2) 서브 클래스 정의 public class WordDocument implements Document { public void open() { System.out.println("Word document opened."); } public void close() { System.out.println("Word document closed."); }..