본문 바로가기
T.I.L. :: Today I Learned/항해99 14기 본과정

Day 24. 중요한 것은 꺾이지 않는 마음

by DaSsom 2023. 4. 26.

스프링 레벨 5 과제 clear !

5레벨의 핵심은 스프링 시큐리티예외처리라고 생각한다. 여전히 100% 이해한 것은 아니었고 강의 코드를 그대로 가져와서 내 프로젝트에 맞게 수정하며 사용했다.

 

이게 3레벨 부터 JWT 토큰을 사용해서 사용자 인증을 해서 스프링 시큐리티를 적용한다고 했지만 잘 된 것인지 의문이 사그라들지 않는다. 기술 매니저님 오시면 여쭤봐야겠다. 

 

그리고 예외처리.

Exception 패키지를 따로 구분해서 그 안에 에러코드나 발생할 exception 을 만들어두긴 했다. 그리고 Global Exception 구성을 위해 이것 저것 참조하며 코드를 구현하긴 했는데 완전히 이해하지 못하겠다. 그리고 일단 예외처리 방법이 정말 다양하다는 것도 알게 되었다. 

 

 → Global Exception

 

[Java] Global Exception 이해하고 구성하기 : Controller Exception

해당 글에서는 Controller에서 발생하는 Exception을 Global Exception을 구성하여서 처리하는 방법에 대해서 공유합니다. 1) 개발 환경 💡 Global Exception 개발 환경을 구성하기 위한 개발 환경입니다. 개발

adjh54.tistory.com

 다양한 처리방법

 

[Spring] 스프링의 다양한 예외 처리 방법(ExceptionHandler, ControllerAdvice 등) 완벽하게 이해하기 - (1/2)

예외 처리는 애플리케이션을 만드는데 매우 중요한 부분을 차지한다. Spring 프레임워크는 매우 다양한 에러 처리 방법을 제공하는데, 어떠한 방법들이 있고 가장 좋은 방법(Best Practice)은 무엇인

mangkyu.tistory.com

 → ExceptionHandler 사용

 

[스프링부트] @ExceptionHandler를 통한 예외처리

@ExceptionHandler는 Controller계층에서 발생하는 에러를 잡아서 메서드로 처리해주는 기능이다.Service, Repository에서 발생하는 에러는 제외한다.간단한 예시부터 살펴보자.이렇게 @Controller로 선언된 클

velog.io

 

 

그리고, 상태코드도 제대로 반환을 해주어야 하는데 내 코드에서는 그냥 200과 400으로 하드코딩되어 있어서 이 부분도 조금 고민을 해보았다. 그래봤자 바꾼 내용은 HttpStatus.Ok() 추가이지만.. !

https://thalals.tistory.com/268

 

ResponseEntity란 - 개념, 구조, 사용법, 사용하는 이유

이거 옜날에 적은건데,, 꾸준히 블로그로 유입되시는 분들이 계셔서 부끄러운 마음에 내용을 조금 더 추가해 보았습니다..ㅎㅎ 앞으로도 계속 변경되거나, 알게된 내용 추가할 예정이고, 틀린부

thalals.tistory.com

 

 


과제 구현하면서 좀 어려웠던 것

 

1. @ColumnDefault("0")

이 어노테이션을 붙이면 바로 기본값은 0으로 초기화 되는 건줄 알았는데 자꾸 null 이 들어가는거임

https://eocoding.tistory.com/71

 

JPA @ColumnDefault에 대한 오해, 컬럼 default 적용하기, @ColumnDefault not working 해결하기, @DynamicInsert

회원가입 API를 개발하던 중, @ColumnDefault가 작동되지 않는 문제를 직면했었다. 어제 내 시간을 뺏어가버린...... 현재 상황 : 회원가입 API에서 request DTO에서는 email, password만 받고, User의 또다른 컬

eocoding.tistory.com

해결 : @DynamicInsert 를 써라

 

 

2. HttpMessageConversionException

컬럼 fetchType 을 EAGER 는 잘 안쓴다고 해서.. ( 그러니까 지연 로딩을 사용해서 해당 엔티티들을 한 번에 조회하는게 더 효율적이라고 해서.. 물론 상황에 따라 다르겠지만 !! ) fetchType 을 LAZY로 변경하니 이 오류가 나타났다.

https://jhkang-tech.tistory.com/92

 

[인하우스키친] Lazy 로딩으로 인한 JSON 오류

안녕하세요 강정호입니다. 오늘은 Hibernate에서 LAZY 로딩으로 인한 JSON Serialization 오류에 대해 알아보겠습니다. 상황1. 메인 페이지에서 검색창에서 "Search" 버튼을 클릭하게 되면 HostList 페이지로

jhkang-tech.tistory.com

 

해결 : 그래서 일단 EAGER 로 다시 원복하여 두었는데 이 부분은 조금 더 공부해봐야 알 것 같다.  

 

 

3. org.springframework.core.convert.ConverterNotFoundException

    org.springframework.beans.factory.UnsatisfiedDependencyException

이 에러들은 뜬금없이 자꾸 나와서 나를 왜 화나게 해...

 

해결 : 어떻게 삽질하다보니 자연스럽게 해결되었다. 이게 왜 자꾸 나왔는지는 잘 모르겠다. 내가 뭔가를 잘못 설정해놨겠거니..

 

 

 

++ 이건 깃 커밋 컨벤션과 깃 플로우에 대해 찾아보고 추천받은 자료

https://techblog.woowahan.com/2553/

 

우린 Git-flow를 사용하고 있어요 | 우아한형제들 기술블로그

{{item.name}} 안녕하세요. 우아한형제들 배민프론트개발팀에서 안드로이드 앱 개발을 하고 있는 나동호입니다. 오늘은 저희 안드로이드 파트에서 사용하고 있는 Git 브랜치 전략을 소개하려고 합

techblog.woowahan.com

https://kdjun97.github.io/git-github/commit-convention/

 

[Git/Github] Commit Convention이란?

커밋 컨벤션에 대해 알아보자

kdjun97.github.io

 

 

+++ 어노테이션 정리 자료 찾아본거

https://sddev.tistory.com/225

 

[Spring Boot] 어노테이션 정리

SpringBoot란? Spring에서는 이러한 설정들을 자동화해주는 SpringBoot라는 프로젝트를 만들었다. Spring에서 SpringBoot라는 프레임워크를 내놓기 시작하면서 SpringBoot의 AutoConfigure(자동 구성) 기능을 통해

sddev.tistory.com

https://brush-up.github.io/java/java-annotation-01/

 

[java] 어노테이션 정리1 (Lombok 관련)

Java 어노테이션 정리1 (Lombok 관련)

brush-up.github.io