분류 전체보기
-
[Spring Boot] Entity builder 설정하기개발/Spring Boot 2024. 1. 15. 03:05
Spring Boot에서 Entity를 만들면 id와 다른 여러 필드로 구성한다. repository에 save 할 때 Entity의 instance를 만들어야 하는데 Lombok의 @AllArgsConstructor를 통해서 객체를 만들 수 있지만 필드의 순서나 변경이 생기면 관련 로직이 모두 망가지는 문제가 있다. 또, id같이 직접 지정하지 않아도 되는 필드에 임의로 값을 넣어야 하는 불편함도 있다. JPA에 의해서 자동으로 id값이 변경되어 저장되긴 하지만 의도하지 않은 동작을 일으킬 우려가 있다. Lombok에서 제공하는 @Builder를 사용하면 이런 문제를 해결할 수 있다.User 엔티티필자의 user 엔티티의 스키마는 다음과 같다.이름타입비고idintPRIMARY KEYemailString..
-
[Spring Boot] 에러 메세지 커스터마이징 하기개발/개발일지 2023. 12. 14. 23:53
스프링 부트 3이전의 구버전에서는 ResponseEntityExceptionHandler을 상속해서 아래의 메소드를 오버라이딩하는 방식으로 접근할 수 있었다.@Overrideprotected ResponseEntity handleMethodArgumentNotValid( MethodArgumentNotValidException ex, HttpHeaders headers, WebRequest request) { ...} 스프링 부트 3부터는 상속대신 어노테이션을 통해 접근하는 것으로 바뀌었지만 내부 구현 자체는 똑같다. 필자는 HTTP 응답을 일관적으로 data, message, status필드로 구성하고 있으므로 이 형식에 맞춰 구현했다. @ControllerA..
-
[Spring Boot] 값 검증하기 - Spring Validation개발/개발일지 2023. 12. 4. 15:46
프로젝트에서 회원가입을 구현하기 위해서 필요한 정보를 dto로 전송받고 있었다.signUp(@RequestBody SignUpDto dto) {public record SignUpDto( String email, String handle, String username, String password) {}코틀린에서는 String타입에 null이 들어갈 수 없기 때문에 모든 필드를 작성해야 하지만, 자바에서는 몇 필드가 없거나 null이어도 그대로 null값으로 전송된다. portpolent에서는 Entity의 설정에 nullable을 false로 해놨기 때문에 SQL Exception이 나고 결과적으로 500 Internal Error가 반환된다. 그렇다고..
-
Spring boot 초기 세팅 및 DB 연결개발/개발일지 2023. 12. 3. 20:43
portpolent의 백엔드를 위해 Spring Boot와 DB를 설정하고 연결해 HTTP 요청을 잘 처리하는지 확인한다. IntelliJ Ultimate와 MariaDB를 사용한다.Spring Boot 프로젝트 시작하기인텔리제이에 spring boot프로젝트를 바로 만들 수 있는 기능이 있어서 그걸 사용했지만 https://start.spring.io/ 에서 생성해도 동일하다. 자바는 17 버전, Gradle은 Kotlin, 프로젝트 언어는 자바, 스프링 부트 3.2 버전을 사용한다. 개발에 필요한 여러 의존성도 같이 추가한다.WebMariaDB DriverJPAValidationSecurityLombok DB 연결하기JPA를 추가하고 스프링 프로젝트를 실행하면 오류와 함께 바로 종료된다. DB와 연..