728x90

개발 304

Spring - 문서화 (Rest Docs 문서)

- Rest Docs는 Spring MVC를 사용하는 REST API를 문서화하는데 도움을 주는 프로젝트이다. - Restful 서비스를 문서화하는 것은 주로 해당 리소스를 설명하는 것이다. HTTP 요청과 생성되는 HTTP 응답의 세부정도이다. - 빌드 구성 plugins {// 1. id "org.asciidoctor.jvm.convert" version "3.3.2" } configurations { asciidoctorExt// 2. } dependencies { asciidoctorExt 'org.springframework.restdocs: spring-restdocs-asciidoctor:{project-version}'// 3. testImplementation 'org.springfram..

2023.09.07.THU

- @RequestBody - HTTP 요청읜 본문(body) 데이터를 Java 객체로 변환하는 역할을 한다. 일반적으로 클라이언트가 POST 또는 PUT 요청을 보낼 때, 요청 본문에 JSON 또는 XML과 같은 데이터를 포함하고 있을 수 있다. 이 데이터를 Java 객체로 변환하기 위해 @RequestBody 어노테이션을 사용한다. - gradle - gradle 설정에서 ' ' 작은 따옴표는 문자열을 감싸는 데 사용된다. 변수 치환이 발생하지 않는다. - gradle 설정에서 " " 큰 따옴표는 문자열을 감싸는 데 사용된다. 변수 치환이 발생한다.

개발/TMP 2023.09.07

Spring - 예외 처리

- 기존의 Controller에서 발생하는 예외들은 @ControllerAdvice 어노테이션이 붙은 클래스에서 처리가 가능하다. - @ControllerAdvice는 전역 예외 처리가 가능하고 예외가 발생했을 때 처리할 수 있는 공통 로직을 제공한다. - PostCreate.java ..... @NotBlank(message = "title을 입력해주세요") private String title; @NotBlank(message = "content를 입력해주세요") private String content; ..... - Post 엔티티에 대한 DTO에 해당하는 PostCreate는 @NotBlank 어노테이션으로 인해 스프링이 제공하는 기본적인 검증이 이루어 진다. - 하지만 기본적으로 제공하는 검증..

Spring, Java - Builder 패턴 분석

- 결론부터 얘기하자면 Builder 패턴을 사용하게 되면, build() 메서드가 호출되기 전까지는 builder 클래스 안에 데이터가 저장되어 있다가 build() 메서드가 실행된 후에 해당 객체 필드에 값이 들어가게 된다. - 아래 예를 통해 데이터 주입 과정을 알아 볼 것이다. 1. Post, PostEditor라는 엔티티가 생성되어 있다. 2. Post에는 아래와 같이 toEditor(), edti() 메서드가 작성되어 있다. public PostEditor.PostEditorBuilder toEditor() { return PostEditor.builder() .title(title) .content(content); } public void edit(PostEditor postEditor) ..

Spring - 게시글 수정 / 삭제

- 게시글을 수정 및 삭제하는 방법에 대해 알아 볼 것이다. - 게시글 수정 - PostEdit.java @Getter @Setter @ToString public class PostEdit { @NotBlank(message = "title을 입력해주세요") private String title; @NotBlank(message = "content를 입력해주세요") private String content; @Builder public PostEdit(String title, String content) { this.title = title; this.content = content; } } - PostService.java @Transactional public void edit(Long id, Po..

2023.09.05.TUE

- @Transactional @Transactional 어노테이션을 붙이면 일반적으로 save() 메서드를 호출하지 않아도 변경 내용이 자동으로 DB에 저장될 수 있습니다. @Transactional 어노테이션이 메서드 레벨이나 클래스 레벨에 적용되면 해당 메서드 내에서 일어나는 데이터베이스 관련 작업들은 하나의 트랜잭션으로 묶이게 됩니다. Spring Framework에서 @Transactional 어노테이션을 사용하면 다음과 같은 동작이 발생합니다: 메서드 내에서 데이터베이스 작업이 시작될 때 트랜잭션이 시작됩니다. 메서드 실행 도중 예외가 발생하지 않으면, 메서드가 정상적으로 종료되면서 트랜잭션이 커밋됩니다. 이때 변경 내용이 데이터베이스에 저장됩니다. 메서드 실행 도중 예외가 발생하면 트랜잭션이..

개발/TMP 2023.09.05

2023.09.04.MON

- @Configuration, @Component - 용도와 역할 1. @Configuration: @Configuration 어노테이션이 지정된 클래스는 스프링의 자바 기반 설정 클래스로 취급됩니다. 이 클래스 내부에는 @Bean 어노테이션을 사용하여 스프링 빈을 정의하고 구성합니다. 스프링 컨테이너에게 빈(Bean)을 생성하고 구성하는 역할을 합니다. 2. @Component: @Component 어노테이션이 지정된 클래스는 스프링의 컴포넌트 스캔의 대상으로 취급됩니다. 컴포넌트 스캔은 지정된 패키지에서 @Component 어노테이션이 지정된 클래스들을 찾아서 자동으로 스프링 빈으로 등록하는 기능을 제공합니다. 주로 비즈니스 로직, 서비스, 컨트롤러 등과 같은 구성 요소를 스프링 빈으로 만들 때 사..

개발/TMP 2023.09.04

Spring - 페이징 (Jpa, Querydsl)

- 주요 객체 1. Page : 페이지 정보를 담게 되는 인터페이스 2. Pageable : 페이지 처리에 필요한 정보를 담게 되는 인터페이스 - 관계 및 사용 1. PageRequest에 의해 Pageable에 페이징 정보가 담겨 객체화 된다. 2. Pageable이 JpaRepository가 상속된 인터페이스의 메서드에 파라미터로 전달된다. 3. 2번의 메서드의 return으로 Page가 전달 된다. 4. 전달된 Page에 담겨진 Page 정보를 바탕으로 로직을 처리하면 된다. - PageRequest의 메서드 1. of(int page, int size) : 0부터 시작하는 페이지 번호와 개수, 정렬이 지정되지 않은 상태 2. of(int page, int size, Sort sort) : 페이지 ..

Java - 람다 (기본, 함수형 인터페이스 API)

- 람다식을 알아보기 전 람다의 기본이 되는 인터페이스에 대해 다시 한 번 알아보겠다. - 인터페이스 구현 방법 - MyInterface.java public interface MyInterface { public void print(); } - 일반적인 인터페이스 선언 방식이다. 1. implements 키워드로 클래스 선언 - MyClass.java class MyClass1 implements MyInterface { @Override public void print() { System.out.println("MyClass2"); } } class MyClass2 implements MyInterface { @Override public void print() { System.out.println(..

개발/JAVA 2023.08.31
728x90