[Spring Security] anyRequest().permitAll() 설정 변경 후, login 요청 시 404 예외 발생 문제
·
Java
배경로그인 기능을 정상적으로 구현하여 적용하게 된 후, 이제 모든 api에 테스트 요청을 보낼 때 먼저 로그인을 통해 액세스 토큰을 추가하여야 하는 환경으로 변경되었습니다. 그런데 api 요청 시마다 계속 토큰을 추가하는 작업은 테스트 단계에서는 다소 번거로울 수 있었기 때문에, 테스트 기간에는 임시적으로 액세스 토큰 없이도 api 호출이 가능하게 변경을 해달라는 팀원들의 요청이 있었는데요. security 설정에서 현재는 제한된 부분들만 permit이고, 나머지 부분은 authenticated 인 상황이라 간단하게 기존 부분을 주석처리 후, anyRequest().permitAll() 를 추가하면 아무 문제 없이 로직이 잘 작동하리라고 예상했습니다.// 기존 설정http.authorizeHttpRequ..
스레드 풀 사용시 vs 직접 스레드 사용시 시스템 리소스 비교해보기
·
Java
배경소켓 네트워크 통신 서버에서 Thread 대신 Thread Pool을 사용하는 것에 대한 장점이 무엇인지 이론적으로는 이해하고 있었으나, WAS 서버 프로젝트를 진행하면서 작고 간단한 규모의 서버 어플리케이션에서도 두 방법 사이에 눈에 보일만한 차이가 나는지 궁금해져 리소스 측정 도구들을 이용해 관찰해 보고자 했습니다.스레드 풀의 장점일반적으로 리퀘스트 요청 마다 스레드를 만들어서 작동시키는는 것에 비해, 스레드 풀을 이용해 미리 스레드를 생성해 놓고 사용하는 것의 장점은 성능과 관련이 있습니다.스레드의 생성-종료 시 리소스의 소비량 감소대부분의 경우에서 자바의 스레드는 OS 네이티브 스레드에 직접적으로 매핑됩니다. 따라서 스레드를 새롭게 생성하는 작업은 시스템 리소스를 많이 소비하게 됩니다.반면 미..
[Java Spring] Interceptor PostHandle에서 Redirect시 ModelAndView에 추가한 값이 쿼리 파라미터로 출력되는 이유
·
Java
문제 상황Spring Boot 3.2.4 환경에서 리다이렉트 후 특정 값에 따라서 화면 구성을 다르게 하기 위해 인터셉터의 postHandle 메서드를 이용해서 ModelAndView 객체에 해당 값을 전달하도록 코드를 작성하게 되었습니다. public class MyInterceptor implements HandlerInterceptor { @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { if(modelAndV..
[Java] Stream 연산 정리
·
Java
Java 8부터 도입된 스트림에서 자주 사용되는 일부 연산들을 정리해 보았습니다.공부해가면서 새롭게 배우는 연산들을 차차 더 추가할 예정입니다.distinct 🔗 Stream distinct()distinct는 중복이 제거된 새로운 스트림을 생성하여 반환해주는 중간 연산입니다. 중복을 판단하는 기준은 각 요소들의 equals 메서드 비교 결과입니다. 따라서 따로 정의한 객체의 스트림에 distinct를 사용하는 경우, equals를 오버라이딩하여 비교 기준을 명확히 해야 합니다.Stream.of(1,1,2,2,3,3,4,4,5,5) .distinct() // 중복되는 값 제거 .collect(Collectors.toList())// [1,2,3,4,..
[Java] ApplicationTest 클래스 (우테코 프리코스)
·
Java
ApplicationTest 클래스에 대해 모르는 내용을 분석하고 정리하였습니다. 아래에서 언급하는 Assertions 클래스는 대부분 프리코스에서 제공하는 클래스를 의미하며, 종종 JUnit의 Assertions 클래스가 나오는 경우 따로 표기하였습니다. JUnit의 Assertions 클래스에 관한 자세한 내용은 링크를, Randoms 클래스에 관한 내용은 링크를 참고해 주세요. 0. 선행 개념 Executable 인터페이스 🔗 JUnit에서 제공하는 함수형 인터페이스입니다. 테스트를 위해 모든 종류의 예외를 던질 수 있도록 하는 점만 빼면, 스레드를 구현하는 데 사용하는 Runnable 인터페이스와 유사합니다. 예외들을 발생시키는 코드(= 테스트 코드)를 다룰 수 있게 하는 역할을 한다고 생각하면 ..
[Java] NsTest 클래스 (우테코 프리코스)
·
Java
프리코스 과정을 진행하면서 테스트를 위해 미션에서 직접 제공하는 추상 클래스인 NsTest를 사용하게 되어, 사용을 위한 이해를 위해 학습 겸 정리하였습니다. 1. 전처리 / 후처리 관련 코드 NsTest 클래스를 살펴보면 어노테이션으로 BeforeEach와 AfterEach를 사용하고 있습니다. import문을 통해 해당 어노테이션들이 JUnit이라는 프레임워크에 속해 있다는 것을 알 수 있었는데, JUnit은 자바 프로그래밍 언어용 유닛 테스트 프레임워크입니다. 다양한 스타일의 테스트를 편하게 수행할 수 있는 기능을 지원합니다. NsTest도 테스트 관련 클래스인 만큼, JUnit의 기능을 가져와서 사용하고 있는 것으로 보입니다. @BeforeEach protected final void init()..