전체 글
[Item 2] 생성자에 매개변수가 많다면 빌더를 고려하라
빌더 패턴 @Builder public Member(String name, String email, String picture, Role role) { this.name = name; this.email = email; this.picture = picture; this.role = role; } Member.builder() .name(name) .email(email) .picture(picture) .role(role) .build(); 생성자에 @Builder를 걸면 아래와 같이 사용가능하다. 빌더 패턴은 점층적 생성자 패턴와 자바빈즈 패턴의 장점만을 따다 만든 패턴이다. 정적 팩토리 메소드나 생성자를 사용할 때 매개변수가 많다면 빌더 패턴을 이용하는 것이 좋다. 점층적 생성자 패턴과 자바빈즈 패..
[Item 1] 생성자 대신 정적 팩터리 메서드를 고려하라
정적 팩토리 메서드란? 정적 팩토리 메서드란 객체 생성을 생성자가 하지 않고 객체 생성의 역할을 하는 메서드라는 의미다. pulbic static CarDto from(Car car) { return new CarDto(car.getName(), car.getPosition()); } 장점 1. 생성자에서는 쓸 수 없었던 메서드 이름을 가질 수 있다.(위 코드에서 from이라는 이름을 사용) 2. 호출할 때마다 새로운 객체를 생성할 필요가 없다. 위의 코드는 메서드를 호출 할 때마다 new로 매번 새로 생성하지만 싱글톤 패턴을 이용해 기존 객체를 호출하는 방식으로 사용할 수 있다. 3. 하위 자료형 객체를 반환할 수 있다. 개인적으로 정적 팩토리 메서드만의 장점인건 잘모르겠다. 전략 패턴을 사용하는 생성..
리눅스 필수 기초 명령어 정리
요즘에는 Windows에 리눅스 환경을 실습하기가 너무 편하다. 마이크로소프트 스토어에서 우분투 설치만 하면 간단하게 터미널 실습을 할 수 있다. 쉘과 터미널의 차이 쉘은 명령어 인터프리터이다. 터미널에 사용자가 직접 입력을 하면 명령이 쉘로 전송되어 입력을 해석하고 즉시 실행한다. 터미널은 쉘에 대한 그래픽 인터페이스 개념이다. 터미널 > 쉘 > 커널 순서로 동작한다. 커널은 가장 내부에 위치하며 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것이다. 리눅스 기본 명령어(pwd cd ls rm mkdir cat) pwd - 현재 경로 위치 출력 cd - 경로 이동(./는 자기 자신의 경로) ls - 현재 경로의 파일 및 폴더 출력 rm - 파일 삭제 mkdir ..
Spring과 Spring Boot의 예외 처리와 에러 페이지 처리 방식
예외 처리 전 에러 페이지 먼저 설정하기 Spring에서 예외 처리란 예외가 발생할 수 있는 곳에 예외 처리를 하여 어플리케이션이 중간에 멈추지 않게끔 만드는 것이다. WAS(예외 페이지 처리) ← 필터 ← 서블릿 ← 인터셉터 ← 컨트롤러 (예외 발생) 위처럼 서버 영역인 Controller에서 발생한 예외에 대한 처리를 안하게 되면 예외를 서블릿 컨테이너인 WAS(보통 톰캣)에 던져 에러 페이지를 통해 처리하게 된다. 그러므로 컨트롤러에서 예외가 발생했다면 어플리케이션이 멈추지 않게 하기 위해 예외를 처리해줘야 한다. 참고 - 에러 페이지를 설정하지 않고 모든 예외를 예외 처리하면 되지 않나하고 생각할 수 있다. 하지만 404 Not Found 에러처럼 페이지 자체가 존재하지 않는 경우는 예외 처리를 ..