분류 전체보기 (236) 썸네일형 리스트형 [Design Pattern] Abstract Factory pattern 1. Abstract Factory pattern 추상 팩토리는 관련 객체들의 구현 클래스들을 지정하지 않고도 관련된 객체들의 모음을 생성할 수 있도록 인터페이스를 제공하는 생성 패턴이다. 이름을 들으면 마치 팩토리 메서드 패턴과 유사하다고 느낄 수 있다. 이 두 방식은 실제 객체를 생성하는 로직을 팩토리에 위임한다는 점에서 유사함을 가지고 있지만 명확한 차이도 있다. 팩토리 메서드 패턴의 경우 조건에 따라서 다른 객체를 생성하는데, 이때 조건을 확인하고 알맞는 객체를 생성하는 로직이 팩토리 클래스에 위임된다. 반면에 추상 팩토리 패턴은 서로 관련이 있는 객체들을 묶어서 팩토리 클래스로 만들고 이러한 팩토리들을 조건에 따라 생성하도록 다시 팩토리를 만들어서 객체를 생성하는 패턴이다. 항상 그런것은 아니지.. [Gradle] Gradle 사용법 - 설치, 초기화 및 지난 글에서는 Gradle 이 무엇인지 알아보았다. 이번에는 Gradle 을 설치하고 사용해보는 튜토리얼을 진행해보려 한다. 해당 내용은 Gradle 의 Getting Started 내용을 읽고 작성하였다. 1. Gradle 설치 & Gradle Wrapper Gradle 을 사용하기 위해서는 우선 설치를 진행해야 한다. 하지만 신규 Gradle 빌드를 생성하는 것이 아니라 이미 존재하는 Gradle 빌드를 실행하려 한다면 따로 Gradle 을 설치할 필요가 없다. Gradle 빌드는 기본적으로 gradlew 또는 gradlew.bat 파일을 가지고 있는데 이들은 Gradle Wrapper 라고 한다. - Gradle Wrapper Gradle Wrapper 는 미리 지정된 버전의 Gradle 을 호출하.. [Gradle] Gradle 이란? Springboot 프로젝트를 생성할 때에 project 종류로 maven 과 gradle 을 선택할 수 있다. 프로젝트를 생성해서 개발을 할때 주로 gradle 을 사용하는데, dependencies 등을 설정하고 빌드할 때 gradle 을 사용하지만 자세한 용도와 내용을 잘모르고 사용하고 있다. 그래서 Gradle 에 대한 내용을 정리해본다. 아래의 내용은 Gradle User Manual 의 What is Gradle? 페이지의 내용을 정리한 것이다. 1. Gradle 이란? Gradle 은 오픈소스 빌드 자동화 툴로 거의 모든 종류의 소프트웨어를 빌드할 수 있는 유연성을 가지고 있다. Gradle 은 빌드하려는 대상이나 빌드 방식에 대한 가정, 제한을 거의 하지않는데, 이러한 성질이 Gradle .. [Spring] MapStruct 1. MapStruct 란? MapStruct 는 매핑된 object 를 서로 변환해주는 기능을 제공하는 라이브러리이다. mapper 인터페이스에서 두개의 Java Bean 타입에 대해서 매핑하는 함수를 선언하면 MapStruct 는 해당 인터페이스를 자동으로 구현하여 매핑 함수를 생성해준다. 스프링을 사용하다 보면 객체를 다른 객체로 변환해야 하는 경우가 있다. 주로 DTO 와 DB Entity 간의 변환이 많이 발생한다. 이런 부분에서 MapStruct 를 사용한다면 bean mapper 함수를 따로 구현하지 않고 자동으로 변환할 수 있도록 할 수 있다. MapStruct 는 어노테이션 기반으로 동작한다. @Mapper 어노테이션을 통해서 mapper 인터페이스를 선언하고 메서드를 선언하여 사용할 수.. [Design Pattern] Builder Pattern 1. Builder pattern 빌더패턴은 객체 생성 디자인 패턴 중 하나로 복잡한 객체를 단계적으로 생성할 수 있도록 하는 설계 패턴이다. 빌더패턴을 사용하면 하나의 객체 생성 코드를 통해서 다른 타입과 표현 방식을 가지는 객체를 생성할 수 있다. - why Builder pattern? 어떤 객체를 생성해야 한다고 가정해보자. 우리는 이 객체를 생성하기 위한 필드들과 로직을 포함한 생성자를 구현하여 객체를 생성할 수 있다. 하지만 만약에 이 객체에 확장이 필요하다면 어떨까? 객체에 필요한 필드들이 늘어나고 복잡한 로직들이 추가되어야 할 것이다. 이러한 문제를 해결할 수 있는 가장 간단한 방법은 서브클래스를 만드는 것이다. 부모 클래스와 자식 클래스를 나누어서 필요한 파라미터 조합들에 대하여 서브클래.. [Spring] ResponseEntity 1. ResponseEntity Spring 에서는 HttpEntity 라는 클래스를 제공한다. HttpEntity 는 HTTP 요청이나 응답에 사용되는 객체를 구현한 클래스로 HttpHeaders 와 HttpBody 를 포함하는 클래스이다. 이러한 HttpEntity 를 상속받아서 구현한 클래스가 ResponseEntity 와 RequestEntity 클래스이다. ResponseEntity 는 사용자의 HttpRequest 에 대한 응답 데이터를 포함하는 클래스이다. 그렇기 때문에 HttpEntity 로부터 상속받은 HttpHeaders, HttpBody 와 응답코드인 HttpStatus 를 포함한다. ResponseEntity 는 status code, headers, body 등과 같은 모든 HTT.. [SpringBoot] 예외처리 - 3 (@ExceptionHandler, @ResponseStatus, @ControllerAdvice) 1. @ExceptionHandler(Exception.class) @Controller 레벨에서 예외를 처리하는 방법이다. 예외를 처리할 메서드를 구현하고 @ExceptionHandler 어노테이션으로 해당 메서드를 선언하여 예외 처리 메서드로 지정할 수 있다. 이때 @ExceptionHandler 어노테이션의 값으로 예외처리할 Exception 클래스 종류를 지정할 수 있다. 이 방식의 가장 큰 약점은 @ExceptionHandler 로 선언된 메서드가 해당 컨트롤러 클래스에서만 유효하다는 것이다. 모든 컨트롤러에 해당 메서드를 구현하는 것은 코드의 양이 늘어나고 전반적인 해결방법이 아니기 때문에 사용하기 어렵다. 모든 클래스가 특정 base 클래스로부터 상속되도록 하는 방식으로 구현하여 해결할 수 .. [SpringBoot] 예외처리 - 2 (HandlerExceptionResolver) 1. HandlerExceptionResolver Spring 에서 예외처리를 위해서 HandlerExceptionResolver 인터페이스를 작성하고 이를 구현한 구현체를 사용한다. Spring 은 에러 처리와 메인 로직을 분리하기 위해 노력하였고, 예외 처리 전략을 추상화한 HandlerExceptionResolver 인터페이스를 만들었다. 대부분의 HandlerExecptionResolver 는 try-catch 와 같이 Exception 을 catch 하고 HTTP 상태코드나 응답 메시지를 설정한다. 그렇기 때문에 WAS 입장에서는 해당 요청이 에러가 아닌 정상적인 응답으로 인식되어서 BasicExceptionController 로 에러처리 요청을 보내지 않고 바로 응답으로 전달되게된다. 예외가 .. 이전 1 2 3 4 5 6 7 8 ··· 30 다음