엔티티 DTO 변환 위치
·
Spring
이 글을 쓰게된 배경프로젝트를 진행하다보니 문득 서비스 계층의 절반이 엔티티를 DTO로 변환하는 코드인 것이 보여서 이걸 이대로 두는 것이 맞는지 다른 사람들은 어떻게 하고 있는건지 더 좋은 방법은 없는건지 궁금해 져서 알아보는 겸 이 글을 작성했습니다. 컨트롤러 vs 서비스인터넷 검색을 해본 결과 사람들은 주로 DTO 변환을 컨트롤러 계층 vs 서비스 계층 으로 두고 의견이 많이 갈렸습니다.저는 컨트롤러 계층에서 DTO 변환을 한다는 건 생각도 못했기 때문에 신선했습니다.DDD 4계층에 따르면 컨트롤러는 사용자에게 UI를 제공하는 역할이 컨트롤러의 역할입니다. DTO가 사용자에게 어떤 데이터를 보여줄 지 결정하는 것이기 때문에 위 원칙에 따르면 컨트롤러에 있는 것이 더 바람직해 보입니다. 서비스 계층은..
스프링 시큐리티의 구조와 대체 방안
·
Spring
이 글을 쓰게 된 배경스프링부트 프로젝트에서 로그인/회원가입 기능을 만들면서 스프링 시큐리티를 학습하는 과정을 담은 글입니다. 스프링 시큐리티의 내용이 너무 많아서 오랜 기간동안 학습하면서 여러번에 걸쳐서 작성했습니다. 다룰 내용Spring Security란?Spring Security를 사용해야 하는 이유Spring Security 구조Spring Security 이외에 인증/인가를 대체할 방법Spring Security란?Spring security란 스프링의 Filter를 이용하여 스프링부트에서 제공하는 인증/인가를 지원하는 프레임워크 입니다.Spring Security를 사용해야 하는 이유Spring Security는 애플리케이션의 보안을 체계적으로 관리하고, 최신 보안 표준을 준수하며, 다양한 ..
스프링 부트에서 예외와 처리 방법
·
Spring
이 글을 쓰게 된 배경예외 처리 관련 로직에서 어려움을 겪다 지금까지 예외 처리에 대한 전반적인 이해와 기본기가 부족하다는 생각에 기본적인 내용을 다시 공부하며 제가 공부한 내용과 이해한 내용을 바탕으로 작성한 글입니다. 예외의 원리에 대한 내용은 김영한 님의 스프링 DB 1편 - 데이터 접근 핵심 원리 를 참고하였고 실제로 코드에 적용한 부분은 제가 프로젝트에서 직접 사용한 부분을 추출하였습니다.다룰 내용예외체크 예외언체크 예외실제 적용예외자바에서는 Throwable을 예외의 최상위 클래스로 제공합니다. Throwable은 자바의 최상위 클래스 Object를 상속받습니다. Throwable에는 Error와 Exception이 있는데 Error는 메모리 부족이나 시스템 오류 같이 복구 불가능한 예외들을 ..
Spring Security 필터에서 발생한 인증/인가 예외 처리하는 방법
·
Spring
이 글을 쓰게 된 배경개인 프로젝트를 진행하면서 처음에는 프로젝트를 빠르게 완성하기 위해서 jwt 토큰에 신경을 못썼지만 추후에 리팩토링 하면서 발생한 과정에 대한 내용입니다. 다룰 내용문제이유필터 내부에서 예외 처리핸들러를 이용해 예외 처리정리문제사용자의 액세스 토큰이 만료되면 리프레시 토큰을 이용해서 재발급 받습니다. 근데 리프레시 토큰도 만료되면? 사용자는 다시 로그인을 해야합니다. 그러기 위해서 리프레시 토큰도 만료된 사용자가 접근을 시도할 때 로그인 화면으로 보내주는 로직이 필요합니다. 이 로직은 스프링 시큐리티의 필터에서 토큰을 검증할 때 처리되어야 합니다.  다음은 리프레시 액세스 토큰을 재발급 하는 메소드 입니다. 여기서 리프레시 토큰도 만료되었다면 사용자를 로그인 화면으로 보내주면 됩니다..
커넥션 풀 vs 복잡한 로직 시간 비용
·
Spring
이 글을 쓰게 된 배경최근에 팀원들과 테이블 설계 과정에서 의견 갈등이 생겨 긴 시간 회의를 했습니다. 테이블 설계를 위해 여러가지 의견을 나눴는데 그 중에 서로 다른 견해를 가지고 있었던 것이 있었습니다. 그것은 바로 하나의 커넥션 비용과 여러개의 복잡한 로직 중 어느것이 비용이 더 큰가 에 대한 내용이었습니다. 저는 그래도 복잡한 로직이 100개 1000개가 넘어가면 복잡한 로직의 비용이 더 비쌀 것이라는 입장이었지만 팀원의 의견은 달랐습니다. 회의에서는 유지보수성의 이유로 결정을 내렸지만 저는 개인적으로 이 것이 궁금해서 이 글을 작성하게 되었습니다. 다룰 내용커넥션 처리 과정복잡합 로직 계산 비용결론실제 테스트커넥션 처리 과정커넥션 비용 계산에 앞서 커넥션이 어떻게 처리되는지 알고 있어야 어느 부..