본문 바로가기

Spring9

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.
백엔드 응답모델(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.
Transactional 애노테이션 상황별 commit, rollback 전략 안녕하세요 여러분 베하입니다! 훌쩍 겨울이 다가왔네요! 다들 올해는 잘 보내고 계신가요? 오늘 이야기 저번 주제를 이어 spring boot의 @Transactional 애노테이션의 commit, rollback 전략을 이야기 하고자 합니다. 사실 저는 이 부분에 대해 몰랐기 때문에 트랜잭션 처리에 있어 많은 삽질을 해버렸습니다… 오늘의 내용이 꼭 도움이 되길 바라는 마음으로 시작하겠습니다. 서론 Spring Boot 애플리케이션을 개발하면서 @Transactional 애노테이션은 데이터베이스 트랜잭션 관리를 용이하게 해주는 중요한 도구 중 하나입니다. 그러나, 이 애노테이션을 사용할 때 어떻게 예외 상황을 처리하고, 언제 커밋 또는 롤백해야 하는지에 대한 전략을 제대로 이해하는 것은 매우 중요합니다. .. 2023. 10. 27.
Spring이란? 탑신병자 듀오 팀 티모입니다. 오늘은 Spring에 대해서 알아보겠습니다. Spring이란, 자바 기반의 엔터프라이즈 개발을 편하게 해주는 경량급 오픈소스 애플리케이션 프레임워크입니다. 특징 1. 애플리케이션 프레임워크 Spring은 자바 객체와 라이브러리들을 직접 관리해줍니다.따라서 개발자는 기능 구현에 필요한 라이브러리들을 복잡한 절차 없이 불러와 사용하기만 하면 되는 장점이 있습니다.또한 이 범위가 특정 계층, 기능에만 종속되지 않고 애플리케이션의 모든 영역에 사용 가능합니다. 2. 경량급 기존의 EJB(Enterprise Java Bean)를 통해 기업들이 원한 큰 규모의 서비스를 구축할 수는 있었지만 서비스 구현을 위해 EJB의 환경과 구성 내에서 작업해야 했고 그 과정에서 불필요하고 복잡한 과.. 2023. 5. 30.
MVC 모델이란? 안녕하세요 Level-up team 입니다! 오늘은 웹 개발의 기본 MVC 패턴에 대해 알려드리고자 합니다. MVC 모델이란 무엇일까요? Model - View - Controller로 소프트웨어 공학에서 사용되는 아키텍처 패턴 중 하나입니다. MVC 패턴의 주 목적은 Business logic과 Presentation logic을 분리하기 위해서 사용합니다. 화면과 데이터 처리를 분리하여 코드 간의 종속성을 줄이고 구성 요소 간의 역할을 명확하게 하므로써 코드 분리가 쉽고 협업에 용이하다는 장점이 있습니다. MVC 패턴 사진 출처 : https://www.codeproject.com/Articles/879896/Programming-in-Java-using-the-MVC-Architecture 사진 출.. 2023. 1. 18.
MSA 장애 예방을 위한 Circuit Breaker(feat. Spring) 1. Test Source Code 1.1 main application @EnableCircuitBreaker Circuit breaker 사용을 위하여 EnableCircuitBreaker Annotation 추가합니다. @EnableHystrixDashboard HystrixDashboard 사용을 위하여 @EnableHystrixDashboard Annotation 추가합니다. 1.2. Service Circuit breaker 적용하기 위해서 실 서비스 메서드 위에 @HystrixCommand(fallbackMethod = “getFallback”) Annotation 정의하고, Service 장애 시 호출한 fallback 메서드는 getFallback 메서드로 지정합니다. 앞서 정의한 Fal.. 2022. 12. 2.