Spring
2023.01.11 TIL - [프로젝트] Ticket Auction 2일차
Ticket Auctoin 프로젝트 2일차 활동 정리입니다. 2일차는 다음과 같은 일정을 보냈습니다. ERD 고도화 1일차 S.A 작성 때 러프하게 잡았던 설계들을 좀 더 디테일하게 의논하며 잡았습니다. 와이어프레임을 그리면서 필요한 도메인들을 정하고 연관관계를 설정해주었습니다. 연관관계 설정과 다대다 관계의 중간테이블, 그리고 각 도메인 별 컬럼들의 디테일이 조금 떨어집니다. 프로젝트 설계 관련하여 좀 더 의논하며 고도화를 시키는 일정을 가졌습니다. 사용자 usecase , 와이어프레임, API 를 정리해나가면서 조금더 디테일하게 잡힌 모습입니다. 다만, 테이블간 연관관계에 대해 제대로 정립되지 않아 거미줄처럼 얽혀있는 모습을 볼 수 있습니다. 지속적인 논의와 고도화를 하며 아래와 같은 현재 최종 ER..
2023.11.23 TIL - JPA 복합키 사용하기 (Feat. 팔로우 API)
오늘 한 것 팀 프로젝트 팀 프로젝트 팀프로젝트 필수 요구사항들을 끝내고 추가 요구사항중 팔로우 기능을 구현하기로 했다. 기능을 구현하기전 엔티티 설계와 ERD 를 작성했다. 팔로우 엔티티 설계 팔로우는 팔로우를 받는 팔로워_id와 팔로우를하는 팔로잉_id를 갖고있다. entity면 2개의 회원 엔티티이다. 처음에는 이를 회원과 각각 ManyToOne 관계를 맺었는데, 다음과 같은 이유로 복합키를 가진 엔티티로 변경했다. 1. 팔로우 관계가 팔로우 테이블과 회원 테이블 의 연관이 되어있는게 맞는가? 예를들어 게시판과 게시판 타입의 관계를 생각해보면 게시판의 타입을 수정할 때마다 게시판 타입이 변경될 수 있다. 게시판의 상태에 따라 게시판 타입도 변경되는 것이다. 그러므로 둘은 서로 관계를 가지고있다. ..
[Spring] ObjectMapper 직렬화 시 한글문자 ??? 문제
개인 프로젝트 과제를 진행 중에, fillter에서 인증 실패 시, response에 에러메세지를 전달하기 위해 ObjectMapper를 이용하던 중 문제가 발생했습니다. 한글 문자가 물음표로 (???) 나오는 문제 ErrorResponse 객체에 들어있는 데이터 중 한글로 된 에러메시지가 있습니다, 해당 response를 ObjectMapper로 직렬화를 하여 반환할 때, 다음과 같이 ????로 반환됩니다. 해결 해결 방법은 다음과 같습니다. 1. reponse content type 지정 response.setContentType(MediaType.APPLICATION_JSON_VALUE); 2.response char set 지정 response.setCharacterEncoding("utf-8")..
[Spring] ObjectMapper - LocalDateTime 직렬화 문제
개인 프로젝트 과제를 진행 중에, fillter에서 인증 실패 시, response에 에러메세지를 전달하기 위해 ObjectMapper를 이용하던 중 문제가 발생했습니다. LocalDateTime 직렬화 문제 ErrorResponse 객체에 들어있는 데이터중 LocaldateTime.now()로 문제가 발생한 시간 데이터가 있습니다. 해당 response를 ObjectMapper로 직렬화를 하여 반환할 때, 다음과 같은 예외가 발생합니다. com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "c..
[Spring] 스프링(Spring)이란?
Spring이란? 엔터프라이즈용 Java 애플리케이션을 간편하게 만들게 해주는 도구 스프링이 등장하기 이전에는 비즈니스 로직을 구현하기 위해 기술 자체에 대한 공부를 추가적으로 해야만 했습니다. 비즈니스 로직을 구현하는 기술 자체가 복잡하고 어려웠기 때문입니다. 스프링은 이전 기술에 비해 사용 방법이 상대적으로 덜 복잡합니다. 따라서, 개발 초기에 기본적인 설정과 적용시킬 기술들만 잘 선택을 해준다면, 기술보다는 애플리케이션의 로직 자체에 더 집중하여 비즈니스 로직을 구현할 수 있습니다. 오픈소스 스프링은 모든 사용자에게 무료로 열려 있습니다. 즉, 어떤 개인 및 기업도 스프링을 사용하여 웹 애플리케이션을 개발을 할 수 있으며, 필요하다면 스프링의 코드를 일부 수정하여 사용하여도 무관합니다. 이처럼 오픈..
[Spring] 유효성 검증 - Validation
Validation이란? 로직을 처리하기 위해 필요한 데이터 ( 사용자 또는 다른 서버의 request 등 )의 값이 유효한지, 잘못된 데이터인지 확인하는 단계를 뜻합니다. 예를들어 이메일 데이터를 받을 때, 이메일의 형식이 일치하지 않는다면, 처리를 하지 못하기에 사전에 확인하고 검증합니다. Bean Validation Spring에서는 validation을 위해 Bean Validation 라이브러리를 제공합니다. Bean Validation은 유효성 검증에 대한 여러 에노테이션을 제공합니다. @NotNull null 불가 @NotEmpty null, “” 불가 @NotBlank null, “”. “ “ 불가 @Size 문자 길이 측정 @Max 최대값 @Min 최소값 @Positive 양수 @Nega..
2023.11.10 TIL
오늘 한 것 스프링 강의 듣기 내배캠 특강 듣기 스프링 강의 오늘은 SpringSecurity 주제의 강의를 들었다. SpringSecurity는 어제 들었던 인증/인가에 대해 Spring서버에서 개발하기 쉽게 많은 기능을 제공해주는 프레임워크다. SpringSecurity의 proxy filter로 시큐리티만의 필터모음(Filter Chain)을 실행하게된다. 시큐리티는 기본적으로 세션 인증을 기반으로 동작하므로 jwt 인증을 위해선 필터의 중간에 jwt 인증/인가를 위한 필터를 커스텀해서 세션 인증을 담당하는 필터의 전 순서에 넣어준다. + 시큐리티의 동작원리, 다양한 시큐리티 필터의 역할 강의를 듣기전에 혼자 설정하고 구현할 정도로만 공부했는데, 강의를 들으면서 튜터님의 설명이 좋아 시큐리티가 어떤..
2023.11.08 TIL
오늘 한 것 스프링 챌린지반 특강 Spring 챌린지반 특강 오늘 스프링 챌린지반 특강은 스프링이 무엇인지 어떤 특징을 가지고 있는지에 대해 배웠습니다. 배운 내용을 정리하여 포스팅 해놓았으니 참고하실분은 참고하시면 좋을 것 같습니다~ https://mocha-coding.tistory.com/33 [Spring] 스프링(Spring)이란? Spring이란? 엔터프라이즈용 Java 애플리케이션을 간편하게 만들게 해주는 도구 스프링이 등장하기 이전에는 비즈니스 로직을 구현하기 위해 기술 자체에 대한 공부를 추가적으로 해야만 했습니 mocha-coding.tistory.com