진짜 개발자
본문 바로가기

FrameWork (총 119개)

Spring Security - Spring MVC Test하기(@WithMockUser, form login 리다이렉션 해결) Sprint security MVC Test Spring MVC를 이용해 웹을 개발하면, 인증 및 허가를 편리하게 다루기 위해 Spring Security를 사용합니다. 또한 어플리케이션을 개발하다보면 필수적으로 테스트코드를 작성하게 됩니다. 하지만, 이때 Security Form Login이 적용되어 있다면, 자동으로 유저를 로그인 페이지로 리다이렉션 시키키 때문에, 우리가 원하는 테스트를 진행하기 어렵습니다. Spring Security 사용시 MVC Test하기 1. Test Project 생성 완성된 프로젝트 구조입니다. 아래에서 각각의 파일들을 자세히 알려드리겠습니다. build.gradle dependencies { implementation 'org.springframework.boot:sp..
Spring Boot - REST API 인증 - 2 (Refresh Token이란?) jwttoken 이번 포스팅에서는, JWT Token을 이용한 REST API 인증 후, Token이 만료된 경우의 처리 방법에 대해 알아보겠습니다. REST API 인증 1 - https://galid1.tistory.com/638위의 링크를 통해 REST API 인증 과정을 숙지하고 오시면 더욱 이해가 쉽습니다. 1. Refresh Token을 사용하지 않는 경우우선 인증 과정은 위와 같습니다. 토큰이 만료되었다면?토큰이 만료되었다면, 사용자의 로그인 세션이 만료된것과 마찬가지이므로, 로그인을 재차 시도해야합니다. 위의 방법은 잘못 되었다why ?이 방법은 토큰이 만료될때마다 사용자가 다시 로그인을 해야합니다. 그러나, 사용자가 로그인을 할때에는 사용자의 아이디 비밀번호가 이용되는데, 이정보는 네트워..
Spring Boot - 개발자를 기억하게하지 말자 (파일리스트와 데이터리스트 요청을 하나의 객체로 바인딩하기 : @ModelAttribute) file과 data를 객체로 바인딩하기 Spring을 이용해 Rest API 개발중, file과 data를 같이 업로드해야 하는 상황이 있었습니다. file과 data는 논리적으로 연관관계가 있었으며, 이를 List형태로 전송하는 경우, 각각의 인덱스 요소가 논리적으로 같은 데이터임을 기억해야하는 상황이었습니다.이때 이들을 하나의 객체로 맵핑하여 이 조건을 개발자가 기억하지 않아도 되도록 변경하였습니다. 1. 시나리오예를들어, 어떤 팀에 멤버를 추가하는 상황에서 멤버의 프로필 정보와, 사진을 같이 받아야 한다고 할때. 클라이언트는, 서버에게 사용자의 프로필정보(data)와 사진(file)을 함께 전송해야 합니다. 1.1 중요 사항이때, 멤버의 사진과 프로필 정보는, 논리적으로 연..
Spring - AOP를 이용해 도메인과 Mobile Push 알림 기능을 분리하자 push aop 이번 포스팅에서는, App Server에서 도메인 기능과 완전히 분리하여, Push 알림 요청 기능을 확장한 과정을 기술하려고 합니다. 도메인과 Push 알림을 분리하자Push 알림은 도메인과 완전히 상관이 없는 개념입니다. 따라서, Push 알림이 도메인 로직에 의존해서도, 도메인 로직이 Push 알림에 의존해서도 안됩니다. 1. 기존의 아키텍쳐기존의 아키텍쳐는 DDD의 Layered Architecture를 이용해 설계가 되어있었습니다.각 계층은 아래로의 의존만을 가지며, infra(저수준 모듈의 구현) 계층의 필요한 구현은 DIP를 이용해 Application, Domain이 infra(저수준 모듈)에 의존하는 것이 아니라, infra가 고수준 모듈에 의존하도록 했습니다. 2. 문제..
Spring Boot - Mockito를 이용해 외부라이브러리를 이용하는 서비스 테스트하기 Third Party Lib 외부 라이브러리에에 의존하는 서비스를 통합테스트 하고 있었습니다. 이때 발생했던 문제를 Mockito를 이용해 처리하는 과정을 정리해보도록 하겠습니다. 시나리오해외에서 여행을 온 관광객이 물건을 구매하고, 환급을 요청합니다.요청된 환급을 관리자가 검증합니다.검증이 완료되면, 사용자의 MobileApp에 Push알림이 전송됩니다.테스트를 진행할 도메인은 위와 같습니다. 테스트할 메소드xxxxxxxxxx@Service@Transactional@RequiredArgsConstructorpublic class AdminRefundEstimateService { // ... private final FirebasePushService pushService;​ public void es..