선요약 커스텀하게 UserDetails를 구현해서 사용중이라면, SecurityContext의 인증된 유저 관련 테스트를 진행할 때 @WithMockUser를 사용할 수 없다. 컨텍스트에 인증된 유저를 배치하는 여러 방법 중 이런 상황에서 편리하고, 아주 유연한 처리가 가능한 @WithSecurityContext를 이용해 테스트 코드를 작성하는 법을 소개해본다. 1. @WithMockUser 사용하기 보통 Spring Security의 Security Context에 로그인된 유저 정보를 이용한 테스트를 진행할 때, 간편하게 `@WithMockUser` 어노테이션을 이용할 수 있다. 내 프로젝트의 Authentication Helper 클래스는 아래와 같이 현재 로그인한 유저를 Security Conte..
안녕하십니까 GDSC Hongik 웹 기초 스터디 강사를 맡은 이진호입니다. 이번 수업 진행 속도가 너무 빨랐다는 피드백이 많아, 강의 내용 글로 작성합니다. 실제 수업에서 1주차 서버와 리소스의 복습 내용을 제외한 수업 내용을 정리하였습니다. 글을 읽은 뒤엔 꼭 실습해봅시다! 실습 영상 링크와 수업 영상 링크는 최하단에 있습니다. 앞으로 더 나은 수업을 위해 노력하겠습니다. 감사합니다. 강의한 내용을 글로 옮겼기 때문에 글이 깁니다! 목차 1번 서문과 2, 3 번은 빠르게 넘어가거나 읽지 않으셔도 됩니다. 1. 들어가면서.. (깁니다. 안 읽으셔도 좋습니다.) 오늘 수업 주제는 "Git : The Information Manager from Hell" + Github 입니다. 제가 프로그래밍을 막 시작..
오늘 수업에선 깃의 유래와 그 강력한 기능들, 그리고 기본 원리에 대해 다루었다. 나름 쉽게 알려주려 노력했으나, 어려움을 호소하는 학우분들이 많았다. 수업 이후 수강 학우분 께서 깃이 관리하는 파일의 라이프 사이클에 대해 자세한 질문을 주셨다. 수업 중 제대로 짚고 넘어가지 못한 부분에 대해 설명하겠다. 1. 추적하거나, 추적하지 않거나 위 그림은 깃이 관리하는 파일 상태의 라이프 사이클이다. 기본적으로 Git이 관리하는 파일의 상태는 두 가지 상태를 가진다. 1. 추적 하거나 2. 추적하지 않거나 (tracked, untrackted) 수업에서 언급했듯이 git은 파일의 변경 사항들을 기록해준다. 그런데 프로젝트 내에 모든 파일이 관리될 필요가 있을까? 저장소에 올리고 싶지 않은 비밀스런 파일이나 잠..
Bucket4J Bucket4J는 쓰로틀링을 위한 라이브러리다. 짧은 순간 너무 많은 요청으로 서버에 심각한 부하가 발생하는 것을 막아주기 위한 쓰로틀링에 적합하다. 어플리케이션 레벨에서 요청 갯수 제한을 위한 쓰로틀링이 필요할 때, 자바 라이브러리인 Bucket4J를 활용하면 간단하게 적용할 수 있다. 요청의 최대 제한을 정해두고, 요청이 들어올 때마다 토큰을 하나씩 소비한다. 위 사진처럼 토큰을 모두 소비하면 요청을 막는 형태다. 작동 원리는 무엇일까? Bucket4J는 내부적으로 Token Bucket 알고리즘을 통해 입력이 들어오는 속도를 조절한다. 과자가 담겨있는 마법의 항아리가 있다고 생각해보자. 마법의 항아리는 총 10개의 과자를 담을 수 있고, 10개 보다 작은 갯수의 과자가 남게 되면 1..