DTO Data Transfer Object(데이터 전송 객체)로서 계층간의 데이터 교환을 위해 사용되는 객체다. DTO는 로직을 가지지 않는 순수한 데이터 객체로 Getter/Setter 메서드만을 가진다. Setter 대신 생성자만 이용하면 불변 객체로 사용할 수 있다. public class UserSaveRequestDto { private String userEmail; private String userPassword; // Setter 대신 생성자를 사용하면 불변 객체로 사용할 수 있다. public UserSaveRequestDto(String userEmail, String userPassword) { this.userEmail = userEmail; this.userPassword = ..
Web Server 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠를 제공하는 서버. 클라이언트의 요청을 가장 앞에서 서비스 정적인 컨텐츠(HTML, CSS, JavaScript)를 제공해야 하는 경우 WAS를 거치지 않고 바로 자원 제공 동적인 컨텐츠를 제공해야 하는 경우 클라이언트의 요청(Request)을 WAS로 보내고, 이 후 WAS가 처리한 결과를 클라이언트에게 전달(Response) ex) Apache, Nginx 등 WAS(Web Application Server) DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 에플리케이션 서버 DB 연동, 클러스터링, 로드밸런싱 등을 처리 Web Server로부터 전달받은 요청을 처리하여 다시 Web Ser..
객체지향 설계의 5대 원칙 객체지향에는 흔히 SOLID라고 불리는 5가지 원칙이 있다. 이 원칙들을 지키면서 개발한다면 시간이 지나도 변경이 용이하고, 유지보수와 확장이 쉬운 소프트웨어를 개발하는데 도움이 된다. 단일 책임 원칙(Single Responsibility Principle, SRP) 하나의 클래스는 하나의 책임만 가져야 한다. 또한 클래스는 하나의 이유만으로 변경되어야 한다. '책임'에 대해 명확한 이해가 되지 않는다면, 일단은 '기능' 정도로만 이해하고 코드를 보면서 개념을 잡아보자. 어떠한 역할에 대해 변경사항이 발생했을 때, 영향을 받는 기능만 모아둔 클래스라면 동일한 책임을 지닌 기능만 모여 있다고 볼 수 있다. 만약 어떤 클래스가 여러 책임을 지닌 기능을 가지고 있다면, 여러 기능으..
싱글톤 패턴이란? 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다. 즉, 하나의 클래스에 오직 하나의 인스턴스만 가진다. public class Singleton { private static Singleton INSTANCE = new Singleton(); private Singleton() { // 생성자는 외부에서 호출못하게 private 으로 지정해야 한다. } public static Singleton getInstance() { return INSTANCE; } public void say() { System.out.println("hi, there"); } } 생성자를 private으로 선언하고 static 변수에 객체를 담아 그 객체만을 반환하는 메서드를 구현한다. 싱글톤 패턴을 ..