일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 오블완
- springdataredis
- 리프레시토큰
- 데이터베이스
- 액세스토큰
- docker
- 트랜잭션
- 토이프로젝트
- 소셜로그인
- 도커
- Spring
- 스프링부트
- 티스토리챌린지
- 파이썬
- CI/CD
- 메시지
- 프로그래머스
- githubactions
- springsecurity
- 스프링
- yaml-resource-bundle
- 스프링시큐리티
- java
- 재갱신
- springsecurityoauth2client
- JIRA
- 국제화
- 백준
- oauth2
- AWS
- Today
- Total
목록2024/10 (7)
땃쥐네
이번 글에서는 이메일 사용가능 여부, 사용자아이디(username) 사용가능 여부, 닉네임 사용 가능 여부 API를 하나씩 구현해보겠습니다. 다만 데이터베이스와 접근해서 실제 데이터를 저장하고 조회하는 부분은 이번 글에서 다루지 않고 이후 글에서 다루겠습니다.1. 표현계층 구현 표현계층부터 구현해보겠습니다. EmailAvailableController 관점에서 생각해보겠습니다.EmailAvailableController는 EmailAvailableUseCase 를 통해 이메일 유효성 확인을 위임하고 그 결과를 받아와서, Api 응답을 작성합니다. 이 과정에서는 MessageResolver 를 사용할겁니다. 그런데 이 컨트롤러 구현 관점에서는 실제 빈으로 등록한 구현체가 어떤지는 생각할 필요가 없습니다.그..
이번 글에서는 지난 글들에서 계속 발생했던 테스트 픽스쳐 중복 문제를 해결해보도록 하겠습니다.1. 문제점: 픽스쳐의 중복 제 프로젝트 구조는 현재 멀티모듈로 구성되어 있습니다. domain-core 를 application-member, domain-member 가 의존하고 있고, 향후 domain-auth 모듈과 같은 모듈이 추가된다면 이들 역시 domain-core를 의존할 것입니다. package com.ttasjwi.board.system.member.domain.modelclass Email( val value: String) { companion object { /** * 기본 Email 객체 복원 */ fun restore(va..
이번 글에서는 애플리케이션 기능 전반에 대한 설계를 소개해보고자 합니다. 사실 처음에는 프로젝트의 모든 기능을 하나하나 구현해가는 과정을 담으려 했으나, 모든 것을 다루기에는 글의 분량이 지나치게 많아지고 취준 관점에서 시간 비용이 너무 많다는 판단이 들었습니다. 이번 글부터 진행되는 내용은 구체적인 코드 구현에 대한 내용은 어느 정도 생략하고 설계 및 일부 예시 코드 언급 수준으로만 진행하도록 하겠습니다.(다만 실제 코드는 GitHub Repository에 계속 게시됩니다.) 일단 회원 가입기능을 예시로 들어 기능 설계/구현을 해보겠습니다. 1. 이벤트 스토밍 서비스를 운영한다는 것은, 그 서비스를 이용하는 사용자들이 있고 그들에게서 서비스 운영의 대가를 직,간접적으로 받아 수익을 창출하는 것이죠. 개..
이번 글에서는 서비스 전반의 예외를 전역수준에서 어떻게 처리하여, 클라이언트에게 응답으로 내려줄지 다뤄보겠습니다. 기본적으로 스프링 웹 애플리케이션을 작성해보시면 오류가 발생했을 때 스프링이 알아서 에러 응답을 작성해줍니다만, 스프링이 작성한 예외 응답은 우리가 통제할 수 없는 영역 밖입니다. 우리가 통제할 수 있는 예외 응답을 내려줄 수 있도록 해야하는데요. 이 부분을 다뤄보겠습니다. 사실 메시지/국제화 처리 및 커스텀 예외 등을 정의해둔 터라 예외 처리에 대한 기틀은 전부 지난 글들에서 다뤘습니다.결론만 내려보면 전역 예외처리는 @RestControllerAdvice 및 @ExceptionHandler 를 써주고, 필터쪽 설정만 살짝 해주면 되긴합니다. 그러나 이렇게만 작성하면 글 분량이 없어지고 ..
이번에 다룰 주제는 메시지/국제화 기능 및 API 응답 규격입니다. (자바코드로 예외 메시지 내려주게 하는 방법 이미지) 사용자에게 응답을 내려줄 때 내려줄 메시지를 java 코드 상에 직접 작성하는 방법도 있긴 하지만, 이 방법은 다국어에 대해 열려있지 못 한 방식입니다. 그래서, java 코드 상에서는 메시지를 식별할 수 있는 code 를 관리하고 이 code를 기반으로 사용자 환경에 따라 제각각 다른 메시지를 내려줄 수 있게 하려고 합니다. 또 저는, API 응답 규격을 일관된 방식으로 내려주고자 하기 위해 API 응답 규격을 정해두려고 합니다. 1. 메시지/국제화1.1 MessageResolver 인터페이스 정의package com.ttasjwi.board.system.core.messagein..
1. Slf4j1.1 Slf4j 란?Slf4j 는 다양한 로깅 프레임워크(예: java.util.logging, logback, Log4j )의 퍼사드 역할을 합니다.실제 로깅 도구들에 대한 일반 API를 제공하고 로깅을 실제 구현과 독립적으로 만듭니다. 그래서 보통 스프링 개발자분들은 Slf4j 인터페이스를 의존하여 개발하고 구현체로는 logback 을 많이 사용합니다.실제로 스프링부트의 웬만한 starter 의존성을 추가하면 slf4j 의존성이 추가되고 기본 구현체로는 logback 이 사용됩니다. 1.2 파라미터화 로깅 (Parameterized Logging)/String variable = "Hello ttasjwi";logger.debug("Printing variable value: " + ..
이번 글에서는 자바/코틀린에서의 예외 개념을 한 번 짚고, 왜 제가 프로젝트에서 커스텀 예외를 정의했는 지, 어떤 식으로 사용했는지 설명해보도록 하겠습니다. 1. 예외 계층 커스텀 예외를 설명하기 전에 Java의 예외 계층을 설명해보겠습니다.제가 지금 사용하는 언어는 Kotlin 이지만 기본기는 Java 쪽에 있기 때문에 Java 기준으로 설명하겠습니다. Throwable은 모든 예외와 오류의 최상위 조상 클래스입니다.이 아래에는 Exception과 Error가 있습니다.Error는 주로 JVM 관련 오류나 시스템적인 문제로, 개발자가 예측하거나 처리하기 어려운 심각한 문제들입니다.예: OutOfMemoryError, StackOverflowError 등Exception 은 주로 개발자가 처리할 수 있는..