Programming-[Backend]/SpringBoot (22) 썸네일형 리스트형 [TIL] @JsonFormat으로 @DateTimeFormat 대신 Date까지만 받기 @DateTimeFormat을 사용하면 파라미터로 받아오는 값의 날짜 형식을 지정해줄 수 있었다. [TIL] Controller 필드 중 LocalDate 처리하기, @DateTimeFormat, Swagger 그러나, @RequestBody로 파라미터를 받고자 하면, pattern 속성을 부여해도 Swagger 상에는 Date가 아니라 DateTime으로 인식되어 초 단위 이상까지 찍혀버리게 된다. 이때는 @DateTimeFormat 대신 @JsonFormat으로 파라미터를 Json의 String 형태로 받아오도록 하고, @Schema의 example 속성에서 받아올 String의 예문을 적어주면 된다. 그냥 GET 메서드에서 Parameter로 받는 곳에서는 @DateTimeFormat을 쓰고, Re.. [TIL] @SuperBuilder 사용법 1.개요 @Builder처럼 어떤 객체의 필드값들을 편하게 지정하기 위해서 사용한다. 다만, super라는 말에서처럼 부모 객체를 상속받는 자식 객체를 만들 때, 부모 객체의 필드값도 지정할 수 있게 하기 위해서 사용한다. 2. 사용법 테스트를 위해서 ListDto라는 객체를 빌더 패턴을 이용해서 만들고자 한다. 이 객체에 companyId 라는 필드값을 1L로 지정할려고 한다. 그런데, 아래와 같이 companyId는 ListDto가 상속받고 있는 BaseDtoAbstract의 필드라면, 부모 객체인 BaseDtoAbstract와 자식 객체인 ListDto에 @SuperBuilder 어노테이션을 적어줘야한다. 그러면 처음 그림과 같이 자식 객체에서도 부모 객체의 필드값을 빌더 패턴으로 만들어줄 수 있게.. [TIL] [패턴] 회원 활성화/비활성화, 수정 비즈니스 로직 구현 1. 구현 대상 회원 또는 활성화/비활성화 및 수정 비즈니스 로직이 필요한 경우. 예를 들어 아래와 같은 엔티티가 있다고 가정한다. 2. 구현 방식 2-1. Controller 수정을 목적으로 하므로, @PutMapping 처리를 해준다. 프론트 쪽에서 "v1/member" 주소로 MemberChangePo를 Http의 Body로 던져주고, Service에서 changeMemberInfo 메소드를 실행한다. 2-2. Service 여기가 패턴의 핵심이다. DB에서 어떤 객체의 Id값이 0일수 없으므로, id가 0일 때는 새로운 객체를 생성하도록 한다. -> 210604 수정 : id == 0 으로 하되, null 일때의 방어 로직이 있어야 한다. 생성된 엔티티의 필드값들을 Po로 입력받은 값들로 정의하고.. [TIL] [에러] 파라미터 (Parameter Object) 값 null 문제 1. 현상 아래와 같이 컨트롤러에서 파라미터로 PO를 받아오는데, 디버깅 시에 받아온 값들이 모두 null로 표기되었다. 2. 원인 PO 쪽에 @Setter 어노테이션이 없었다. 정확한 원리는 잘 모르겠으나, http의 파라미터로 받아온 값을 객체로 변환해주는 기반이 Setter를 통해서 이루어지는 것으로 추정된다. 3. 해결 PO 클래스에 @Setter 어노테이션을 추가해주었다. [TIL] @RequestBody, http의 파라미터를 Body로 넘기기(feat. 컨트롤러 테스트), MockMvc, Gson 컨트롤러 테스트를 할 때, Parameter 값을 아래와 같이 MockMvc의 .param으로 넘겨주었다. 컨트롤러 정의 부분 컨트롤러 테스트 부분 그러나 Put이나 Post의 경우에는 @Valid 뒤에 @RequestBody를 붙여주어서 http의 Body에 PO 입력값을 담아서 보내주었다. 즉, @RequestBody는 http의 Parameters = { } 로 파라미터를 전달하는 것이 아니라, Body = { }에 body값을 전달한다는 의미가 된다. 이렇게 설정하면 아래와 같이 컨트롤러 테스트 부분도 변경하여 MockMvc의 Content 부분에 Json 타입을 넣어주면 된다. 이 때, Gson 객체로 PO를 Json으로 바꿔주도록 한다. String TestJsonBody = new Gson(.. 스프링 부트 : 기본 개념 1) Entity, Repository 개념 개인적인 정리와 기록을 위한 글이다. 혹시라도 참고해주시는 분들께서는 정확하지 않은 내용이 있을 수 있으니 유의해주시길 바란다. 자바 진영의 백엔드 개발을 아무런 지식없이 시작하게 되었다. 현업에서 몸으로 부딪히며 정신없이 배우는 단계이다. 한편으론 초보자의 입장에서 쓰는 글이기 때문에 이해가 쉽고 공감이 되지 않을까 생각된다. Spring Boot, Spring Data JPA, Maven, lombok을 활용하여 서버 사이드의 서비스를 만드는 과정 중에 배운 기본 개념이다. 사용한 IDE는 intelliJ 이다. 1. Entity(엔티티) 데이터베이스(Database, DB) 에 쓰일 필드와 여러 엔티티간 연관관계를 정의한다. 데이터베이스는 엑셀처럼 2차원 테이블이라고 생각하면 되는데, 이 테이블에 .. 이전 1 2 3 다음