Spring/Spring Boot
Effective Java를 읽으며 코드 리펙토링
이펙티브자바의 목차 생성자 대신 팩토리 메서드를 고려해라 Item: Consider static factory methods instead of constructors 장점 1. 이름을 가질 수 있다. package com.everyparking.api.dto; import lombok.Builder; import lombok.Data; import org.springframework.http.HttpStatus; @Data @Builder public class DefaultResponseDtoEntity { private String message; private Object data; private HttpStatus httpStatus; private DefaultResponseDtoEntity(..
[Spring Boot] 요청, 응답 시 Json에 루트 추가하기
RealWorld로 스프링부트를 공부하던 중 다음과 같은 Json 포맷을 발견했다. Request Format { "user": { "email": "jake@jake.jake", "password": "jakejake", "username": "jake" } } 위와 같이 "user"로 VO를 한번 감싸는 방식의 요청이다. Response Format { "user": { "email": "jake@jake.jake", "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJqYWtlIiwiZXhwIjoxNjYzOTk2NTA4LCJ1c2VybmFtZSI6Impha2UifQ.W3h0uxdWyvIgbgaG1nqfCsIcvyIG06gZhUT95YVNPCs", ..
객체지향의 사실과 오해를 읽으며 코드 리팩토링
http://www.yes24.com/Product/Goods/18249021 객체지향의 사실과 오해 - YES24 『객체지향의 사실과 오해』는 객체지향이란 무엇인가라는 원론적면서도 다소 위험한 질문에 답하기 위해 쓰여진 책이다. 안타깝게도 많은 사람들이 객체지향의 본질을 오해하고 있다. 가장 www.yes24.com "객체지향의 사실과 오해"는 인프런 김영한님의 JPA강의에서 추천한 책이다. 사람은 자동차 문을 열면 안된다. 객체지향에서는 자동차도 객체이기 때문에 사람이 자동차에게 문을 열어달라고 요청해야한다. 자동차가 예외를 확인한 후 문을 여는 것이 옳다. 위 내용을 읽고 나의 코드를 리팩토링 해봤다. 기존 코드 도메인 @Getter @NoArgsConstructor @AllArgsConstruct..
[학교 관리 프로젝트] 도메인 단위 테스트와 테스트 코드를 가독성있고 빠르게 작성하는 방법
테스트할 도메인은 아래 포스트를 참고하자. 2022.08.31 - [학교 관리 서비스 프로젝트] - [학교 관리 프로젝트] UserDetails를 구현한 User 도메인, @Query를 사용한 JPQL과 서비스 코드 구현 [학교 관리 프로젝트] UserDetails를 구현한 User 도메인, @Query를 사용한 JPQL과 서비스 코드 구현 UserDetails.java UserDetails를 상속한 클래스는 Abstract하거나 아래의 메서드를 완성시켜야한다 반환타입이 boolean 값인 메서드는 이 계정이 유효한지 판단하는 메서드다. 접속한지 90일이 지났거나, 신 tae-wk.tistory.com 한글 메서드 명 사용하기 실무에서 사용할지 모르겠지만, 나의 경우 테스트 코드의 메서드 명은 주로 한글..
[게시판 RESTful API] - RestController와 Service를 구현해보자 (3)
https://tae-wk.tistory.com/53 [게시판 RESTful API] - domain을 만들며 Entity를 알아보자. 1. 게시판을 저장할 POST 엔티티를 만들어준다. @Data @AllArgsConstructor @NoArgsConstructor @Builder @Entity @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) public class Post { @Id @Genera.. tae-wk.tistory.com 프로젝트 세팅과 domain을 작성하는 방법은 위 포스트를 참고하면된다. 1. RestController package com.developer.controller; @RestController @RequestM..
[게시판 RESTful API] - domain을 만들며 Entity를 알아보자. (2)
1. 게시글을 저장할 Post 엔티티를 만들어준다. @Data @AllArgsConstructor @NoArgsConstructor @Builder @Entity @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) public class Post { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "POST_TITLE") private String title; @Column(name = "POST_CONTENT") private String content; @Column(name = "POST_AUTHOR") private String aut..
[게시판 RESTful API] - 프로젝트 세팅 (1)
1. build.gradle 의존성 세팅 plugins { id 'org.springframework.boot' version '2.7.2' id 'io.spring.dependency-management' version '1.0.12.RELEASE' id 'java' } group = 'com' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-we..
[Spring Boot] - 유효성 검증을 하는 방법과 유효성 검증 실패 시 Exception핸들링을 하는 4가지 방법을 알아보자
스프링에서 유효성 검증을 하는 여러가지 방법을 알아보겠습니다. BindingResult를 사용하는 방법 새 어노테이션을 만들고 ConstraintValidator를 상속받아 유효성 검증 필요한 어노테이션을 커스텀하기 Exception으로 처리하기 ControllerAdvice 사용하기 Validation은 프로그래밍에 있어 가장 필요한 부분입니다. 예를 들면 이름이 NULL인경우 NPE를 방지하거나 나이를 입력할 자리에 음수가 들어온 경우를 방지하는 과정을 Validation이라고 합니다. public void valid(String username, String password, int age) { if (username == null | password == null) { return; } if (a..