본문 바로가기

분류 전체보기151

TIL 230726 : CustomException 사용하기 예외처리 또한 개발의 중요한 역량 중 하나로 느껴진다. 오늘은 커스텀예외처리를 만들고 관리하는 법을 배웠다. CustomException 사용하기 (에러 메시지 관리 messages.properties) 커스텀예외처리를 알맞게 쓰는 게 어렵지, 쓰는 건 어렵진않다. 예외 클래스 만들기 원하는 이름으로 만들고 표준예외를 상속받는다. 생성자로 예외를 만들기 (던져주기) 원래는 IllegalArgumentException이 있던 곳에 만들어둔 예외를 생성하기만 하면된다. 위의 경우엔 메시지를 받는 생성자를 만들어 두었다. CustomException '잘' 썼을 때의 장점 아마 이 부분이 더 중요할 것 같다. 잘 쓰는 것이 어렵다. 1. 일단은 표준예외를 우선한다. 이펙티브 자바 책에서는 이렇게 소개한다. -.. 2023. 7. 26.
TIL 230725 : RestControllerAdvice로 전역 예외 처리 이전 코드 현재 모든 컨트롤러에 비슷한 예외처리 문구로 try-catch문이 주렁주렁 달려있다. @Controller Advice라는 전역예외처리 기능을 이제야 알아서 안타깝지만 이제라도 알아서 리팩토링을 해본다. 추가 코드 common패키지에 해당 클래스를 추가해두었다. 추가된 코드를 하나하나 살펴보자. @RestControllerAdvice Controller와 RestConroller의 차이처럼 해당 메소드가 실행됐을 때 결과값을 바디에 바로 보내주는 기능이 추가된것이다. @ControllerAdvice 어노테이션으로 선택하여 사용이 가능하다. 아래는 @ControllerAdvice에 대한 설명이다. @ExceptionHandler, @InitBinder, @ModelAttribute 이 세 메소드.. 2023. 7. 25.
TIL 230724 : 과제리뷰 리뷰. 과제리뷰를 하며 대체적으로 많이들 들었던 리뷰 세가지를 꼽았다. 이는 나 또한 바로 적용가능한 부분이고, 그만큼 중요하다고 생각해서 이를 토대로 바로 리팩토링해야할 요소들이라고 생각한다. 무분별한 Setter 금지 Setter를 굉장히 조심히 써야한다는 말을 들었었다. 왜냐하면 Setter가 있다는 것은 이 자료가 바뀔 가능성이 있다라는 것. 데이터의 무결성을 지키기 위해 Getter, Setter를 통해 멤버 변수에 접근하지만 요즘 실무에서는 거기서 더 나아가 Setter 자체를 조심하는 분위기다. 비즈니스 로직에서 자체적으로 접근하는 방식을 더 선호한다. @NoArgsConstructor 신중히 비어있는 객체를 만들 수 있는 생성자를 명시한다는 의미이다. 무분별하게 만든다면 비어있는 객체가 생성되고 .. 2023. 7. 25.
WIL 230723 : 익숙하면서도 낯선 팀플. FACTS 이번 일주일 동안 있었던 일, 내가 한 일 : SNS에 필요한 다양한 기능들을 팀원들과 토론하고 기초부터 설계하고 구상하고 개발해 나갔다. 나는 소셜로그인에 도전했다. 연관관계를 이용해 중간테이블을 만들고 이를 통한 팔로우 기능도 구현했다. 추가적으로 관리자 권한에서의 몇가지 기능도 구현했다. FEELINGS 나의 감정적인 반응, 느낌 : 기존의 것의 빈틈을 채우는 연습을 하고싶다. 하지만 쉽지않다. 빈틈을 볼 시각이 없어서 시작을 못 한다. 답답하다. Redis라는 새로운 스택을 사용해보고 싶었지만 쉽지않았다. FINDINGS 그 상황으로부터 내가 배운 것, 얻은 것 : 아직 빈틈이 분명 많이 보일 것이라는 것. 그리고 조금씩 리뷰를 받을 때마다 방어적인 태도가 없는 것. 이 자세를 유지해야.. 2023. 7. 25.
TIL 230721 : HTTP 한번 짚고 넘어가기. 마침 궁금하고 미뤄왔던 개념인 http에 대해서 오늘 짧게 특강이 올라왔다. 새롭게 안 포인트들을 정리하고자 한다. 스키마 스키마라는 단어를 종종 들어서 헷갈렸는데 쉽게 생각해서 http와 같은 부분이다. https와 같이 흔히 보는 건 이 두가지이지만 이와 다른 프로토콜 또한 존재하고 이들을 스키마라고 명명한다. OSI 7 Layer 정의 자체는 네트워크 통신이 일어나는 과정을 7단계로 나눈 것이다. 왜 나눴을까? : 흐름을 보기 쉽고 문제가 생겼을 때 바로 파악하기 쉽게 하기 위해 계층 종류 1. 물리계층 : 실질적으로 기계를 통해 데이터 신호를 보내주는 단계. 그저 0과 1일뿐. 2. 데이터 링크 계층 : 1차 분류소 느낌. 오류를 찾고 재전송도 하는 등, 안전한 정보전달을 위한 계층. 맥주소로 통.. 2023. 7. 25.
TIL 230720 : ResponseEntity로 응답 메시지 보내기 기존 코드 기존에 상태코드와 메시지를 포함해서 전달해달라는 요청을 받고 위처럼 바로body에 String으로 담아서 전달했다. 이걸 보고 한 팀원께서 리뷰를 해주셨는데, ResponseEntity에 ApiResponseDto를 담아서 전달하는 형태로 통일하자고 했다. 수정된 코드 ResponseEntity타입으로 반환을 명시했고, 지네릭스로 미리 만들어둔 ApiResponse를 담기로 선언했다. ApiResponse 클래스는 위와 같이 상태코드와 상태메시지를 담는 형태이고, @ToString을 붙여줘 자동으로 해당 객체를 반환해도 필드명을 포함해서 전달하도록 했다. (팀원으로부터 처음 알게 된 기능) 해당 api의 성공과 실패시의 return을 각각 위와 같이 작성했다. ApiResponseDto의 생성.. 2023. 7. 24.