본문 바로가기

java22

java Exception 전파 베하! 안녕하세요 여러분! 일단고 팀입니다. 오늘은 개발을 진행하다가 겪은 java의 기초이자 중요한 부분인 Exception 관련한 내용입니다. 저는 트랜잭션이 작동하기 위해 테스트하는 과정에서 Exception에 대해 설명 드린적이 있었고 그 과정에서 저는 Exception이 특정 함수를 호출한 함수에서만(try-catch를 처리 유무와 상관없이) 해당 예외가 전파되는 줄 알았습니다… 하지만 최근 특정 로직에 대해 커스텀 예외를 던지고 그 예외에 대한 메시지를 API 클라이언트까지 전달하기 위해서 작업을 하던 중 예외 전파 범위에 대해 알게 되어 공유드리고자 합니다. Exception 전파 A method가 있고 B method가 있고 C method가 있을 때 C에서 Exception이 발생하면 해.. 2024. 2. 8.
Spring Boot Model validation 관련 애노테이션 베하! 새로운 한 해가 시작되었습니다. 저도 아직 마음만 먹고 시작을 하지 못했답니다. ㅠㅠ 하지만 반드시 새해라고 무언가를 해야한다는 압박에서 벗어나서 늘 잘해왔던 여러분들이 이번 해도 똑같이 꾸준하기만 한다면 다른 목표를 달성하는 것보다 더 좋은 여러분과 제가 되지 않을까 생각합니다. 시작말 오늘 들고 온 이야기 주제는 Spring boot에서 웹 백엔드를 개발할 때 객체를 통해 Request를 받아 처리하는 경우가 많죠? 그럴 때 우리는 model 혹은 vo, dto class에 valid 애노테이션에게 알려줄 제한사항을 쉽게 설정해서 유효성을 검사하기도 합니다. 저는 그 유효성 검사를 도와주는 애노테이션들을 가볍게 정리하려 합니다. 사실 진작에 알았다면 굳이 controller나 service 레.. 2024. 1. 12.
App Engine과 각 언어 환경 베하. 다들 추운 날씨에 고생이 많으십니다! 서울은 지금 눈이 쌓여있네요. 제 자취방은 창문에서 일어나는 결로 현상 때문에 창틀에 물이 흥건합니다. 다들 더 추워질 겨울 대비 잘하시구요.. 오늘의 포스팅 주제는 GCP가 제공하는 Service 중 하나인 App Engine과 App Engine에서 사용되는 각 언어 환경의 차이점에 대해 알아보겠습니다. 먼저, App Engine이 무엇인지 알아보아야겠죠? App Engine이란 Web Application을 개발하고 호스팅하기 위한 완전 관리형 서버리스 플랫폼입니다. 사용되는 개발 언어, Library, Framework 중에서 선택하여 App을 개발한 후 App Engine에서 Provisioning Server를 관리하고 필요에 따라 App Insta.. 2023. 12. 22.
Spring boot API ExceptionHandler 안녕하세요. 여러분 12월의 마지막이 다가오고 2023년의 마지막이자 2024년의 시작이 다가옵니다. 일단고 팀의 많은 글들이 도움이 되셨을지 궁금합니다. 그리고 이제 일단고 팀의 테크 블로그는 내년에도 볼 수 있을지.. ㅠㅠ 오늘 기술적인 부분을 마지막으로 업로드해볼까 합니다. 얼마전 API를 개발하고 사용하면서 예기치 못한 에러가 발생했습니다. 초보 개발자인 저는 깜짝 놀랐는데요. 특정 상황에 대한 예외처리가 부족했고 client가 응답받기 위한 응답을 정의하지 않아 client가 적절히 처리하기 어려웠습니다. 그래서 오늘은 Spring boot에서 ExceptionHandler를 이용해 Controller나 service에서든 예외에 대한 적절한 대응하는 방법을 말하고자 합니다. 1. Excepti.. 2023. 12. 22.
백엔드 응답모델(result) 구성하기 안녕하세요 여러분! 일단고 팀입니다. 요즘 독감이 유행이라고 들었습니다. 모두 독감 조심하세요. 오늘은 백엔드의 응답모델에 대해 알아보고, 이를 구현하는 코드를 직접 작성하겠습니다. 응답 모델이 필요한 이유 백엔드에서 응답모델을 구현 할 필요는 없습니다. 하지만 응답 모델을 구현해두면 재활용성이 높아지고, 서비스를 구성할 때 코드를 간결하게 만들 수 있다는 장점이 있습니다. 응답 모델의 구성 응답 모델에서 필요한 내용은 다음과 같습니다. 상태 코드 (Status Code): HTTP 응답의 가장 기본적인 요소 중 하나로, 요청의 성공 여부나 실패 원인을 나타냅니다. 예를 들어, 200은 성공, 404는 찾을 수 없음, 500은 서버 오류를 나타냅니다. 메시지 (Message): 상태 코드에 대한 설명으로.. 2023. 12. 8.
Java의 List Stream() 안녕하세요 여러분! 일단고 팀입니다. 벌써 크리스마스의 시즌이 느껴지면서 날씨가 추워집니다. 몸과 마음 모두 따뜻하게 해야 할 계절이네요. 오늘은 Java의 List 인터페이스에서 제공하는 Stream() 메서드에 대해 알아보고, 이를 활용하여 코드를 간결하게 작성하고 성능을 향상시킬 수 있는 방법에 대해 살펴보겠습니다. 1. Stream 이란 Java 8부터 추가된 Stream은 컬렉션 요소들을 처리하기 위한 연속적인 데이터 흐름을 나타내는 인터페이스입니다. Stream을 활용하면 간단하고 선언적인 방식으로 데이터를 처리할 수 있습니다. 이를 통해 병렬 처리 및 다양한 연산을 수행할 수 있어 코드의 가독성과 유연성이 증가합니다. 2. List.stream() 과 foreach 구문 List.stream.. 2023. 11. 24.
MyBatis 성능 개선포인트 베하! 안녕하세요. 추석이 다가 왔습니다! 오늘 알아볼 내용은 MyBatis 사용 시 성능 개선 포인트에 대해서 알려드릴까 합니다. 개선 포인트에 대해 알려드리기 전 먼저 제가 경험했던 부분에 대해 국한된 부분이라 각 환경에 따라 다를 수 있다는 점, 대용량 데이터 배치 처리 환경에서 MySQL을 사용했고 대용량 데이터는 정확히 100만개의 row, 40개 컬럼을 기준으로 메모리 안정화를 주 목적으로 한 작업에서 개선 포인트를 알려드리니 참고 부탁드리겠습니다 ^^ 또한, 저는 대부분의 설정 및 성능 포인트를 setting보다는 java 코드로 구현했습니다. MyBatis란? 먼저 MyBatis 성능 개선 포인트를 알기전 MyBatis에 대해 간략하게 알아볼까요? MyBatis는 자바 어플리케이션과 관계형.. 2023. 9. 27.
람다 캡처링(Lambda Capturing) 베하! 안녕하세요 여러분, 일단고입니다. 오늘은 개발하면서 알게된 ‘람다 캡처링’에 대해서 알아보겠습니다. 얼마전 개발을 진행하다 람다식을 사용했는데요. 그때 Variable used in lambda expression should be final or effectively final 오류를 만났습니다. 람다 캡처링이 발생했기 때문인데요. 그래서 람다 캡처링이 무엇인지에 대해 알아보겠습니다. 발생한 오류 Variable used in lambda expression should be final or effectively final 라는 오류로 제가 사용하는 intellij가 알려주고 있습니다. 이 에러를 직역해 보면 람다 표현식에서는 final effectively final 변수만 사용할 수 있다는 .. 2023. 9. 1.