java (72) 썸네일형 리스트형 [Spring] lombok - @Builder 1. @Builder @Builder 는 객체에 Builder 패턴을 자동으로 적용해주는 lombok 의 어노테이션이다. Builder 패턴은 복잡한 객체를 간단하게 생성할 수 있도록하는 디자인 패턴 중 하나로 생성자를 통한 생성이 아닌 빌더의 필드별 함수를 통해서 객체를 생성한다. @Builder 는 클래스 레벨에 붙이거나 생성자 또는 메서드에 붙여서 파라미터를 활요한 Builder 패턴을 자동으로 생성해준다. 2. @Builder class 만약에 클래스가 @Builder 로 지정된다면 클래스의 모든 필드를 매개변수로 받는 private 생성자가 자동으로 생성된다. 이때 생성자는 컴파일러를 통해 자동으로 생성되기 때문에 사용자가 따로 생성자를 구현하거나 @XArgsConstructor 형식의 어노테이.. [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] SpringBoot 에 lombok 적용하기 1. lombok lombok 은 자바 라이브러리 중 하나로 자바 개발시에 반복적으로 구현되는 getter, setter, toString 등을 자동으로 생성해주어 코드를 간결하게 유지하고 생산성을 높여주는 라이브러리이다. 어노테이션을 기반으로 동작하며, 클래스에 어노테이션을 추가하여 컴파일 과정에서 실제 기능이 생성되는 방식으로 동작한다. 즉 소스코드에서는 어노테이션만 보이고 해당 메서드들은 보이지 않지만 실제로 컴파일 된 결과물 .class 파일에는 코드가 생성되어지게 된다. lombok 을 사용하면 반복적인 코드가 제거되어 코드의 가독성이 좋아지고 유지보수에 유리해진다. 또한 반복적인 코드 작성의 시간이 줄어 생산성이 향상된다. 하지만 경우에 따라서는 코드가 직관적이지 않고 어노테이션으로 생략되는 .. [Spring] Database 연동 - 4 (JPA) 1. JPA JPA 는 Java Persistence API 의 줄임말로 Java 표준 ORM 인터페이스이다. ORM 은 Object Relational Mapping 의 줄임말로 객체와 RDB 를 매핑하는 기술이다. 객체와 DB 를 매핑하면서 SQL 쿼리 중심이 아닌 객체 중심의 코딩을 할 수 있도록 한다. JPA 는 Java 표준 ORM 인터페이스로 JPA 의 기능을 사용하면 기존의 반복적인 코드는 물론이고 기본적인 SQL 쿼리를 자동으로 생성해주어 코드를 간결하게 유지할 수 있다. 또한 JPA 를 사용하여 데이터를 객체와 매핑하게 되면, SQL 과 데이터 중심의 설계에서 Java 언어와 객체 중심의 설계로 전환할 수 있다. 2. 환경 설정 JPA 를 사용하기 위해서는 application 의 라이브.. [SpringBoot] Logging - 2 (Logback) 1. Logback Logback 은 자바 로깅 프레임워크 중 하나로 Spring boot 에서 기본 로깅 모듈로 사용하고 있는 모듈이다. Spring boot 에서 dependency 를 설정할 때 spring-boot-starter-web 패키지를 설정하는데, 해당 패키지에 Logback 이 포함되어 있다. Logback 은 일반적으로 logback.xml 파일을 통해 설정하는데, Spring boot 환경에서는 logback-spring.xml 파일을 통해서 Logback 을 설정한다. Logback 의 설정으로는 로그를 출력하는 방식 (콘솔, 파일, 네트워크 통신 등등), Spring Profile 별 로그 설정, 로그 레벨, 로그 형식 등등의 기능을 설정할 수 있다. 2. Logback 설정 -.. 이전 1 2 3 4 5 ··· 9 다음