본문 바로가기

Programming137

스프링 웹 환경에서 요청 응답 플로우 (request, filter, interceptor, controller, exceptionHandler) Request - Response 흐름 사용자의 요청이 서버에 도착하면, DispatcherServlet이 해당 요청을 처리한다. 이때, 요청과 응답에 대한 정보는 각각HttpServletRequest와 HttpServletResponse에 저장. Filter Filter는 요청과 응답에 대한 전처리와 후처리를 담당. LoggerFilter는 요청과 응답에 대한 로깅을 수행. 요청과 응답의 헤더 정보, 바디 정보 등을 로그로 남긴다. Interceptor Interceptor는 컨트롤러의 실행 전후에 특정 로직을 실행. AuthorizationInterceptor 는 요청 URL의 로그를 남기고, 특정 HTTP 메소드나 리소스에 대한 요청이면 통과시킨다. Controller 실제 비즈니스 로직을 처리하는.. 2023. 10. 16.
Spring에서 argumentResolver를 사용하여 인증 책임 분리하기 문제의식 다음과 같은 컨트롤러 메서드가 있다고 해보자. @PostMapping("/tasks") public ResponseEntity createTask(@RequestBody TaskCreateReq taskCreateReq, HttpSession session) { final Long userId = (Long) session.getAttribute(LOGIN_SESSION_KEY); if (userId == null) { throw new RuntimeException("bad request. no session."); } taskService.create(taskCreateReq, AuthUser.of(userId)); return ResponseEntity.ok().build(); } 위 코드.. 2023. 7. 23.
스프링 프로젝트 API Server Error 처리하기 1. 통일된 Error Response를 갖게 하자. 문제점 통일된 Response를 갖지 않으면 ... 클라이언트 쪽에서 서로 다른 형식의 Error Response를 처리해야 한다. -> 추가적인 작업과 오류 처리 로직이 필요하게 된다. 제안 다음과 같은 형식의 Error Response 형식을 고려해볼 수 있다. { "message": "Invalid Input Value", "status: 400, // "errors": [], 비어 있을 경우 null이 아닌 빈 배열을 넘긴다. "errors: [ { "field": "name.last", "value": "", "reason": "must not be empty", }, { "field": "name.first", "value": "", "re.. 2023. 7. 9.
백준 알고리즘 풀때 input 설정 인텔리제이에서 쉽게 하기 백준 알고리즘은 다음과 같이 입력을 받아서 출력으로 정답을 내는 시스템으로 되어 있다. 표준 입력을 Scanner나 BufferedReader를 통해 받아서 사용할 때 매번 콘솔창에 테스트 데이터를 넣어주어야 하는 것이 생각보다 귀찮은 일이다. 그래서 다음과 같이 입력을 텍스트 파일에 붙여넣어 runtime시 입력되도록 자동화할 수 있다. 1) input.txt 생성 어느 위치든지 사용할 위치에 input.txt 파일을 생성한다. 2) run configuration 설정 다음과 같이 사용하는 클래스를 우클릭하여 들어갈 수도 있고 우측 상단의 edit을 통해 들어갈 수도 있다. 해당 버튼을 클릭하면 다음과 같은 창이 뜨는데 여기서 modify options를 눌러 Redirect input from 버튼.. 2023. 6. 24.
StringBuilder와 String 클래스의 문자열 만드는 효율 차이 Java 문자열 연결 Java에서 문자열을 연결하는 방식으로 3가지 방법을 사용할 수 있다. - String을 "+" 연산자로 연결하기 - StringBuffer 클래스의 append() 메서드를 이용하기 - StringBuilder 클래스의 append() 메서드를 이용하기 각각의 방법은 다음과 같다. 1. String을 "+" 연산자로 연결하기 final String testWord = "hello"; String string = new String(); string += testWord; 2. StringBuffer 클래스의 append() 메서드를 이용하기 StringBuffer stringBuffer = new StringBuffer(); final String testWord = "hello".. 2023. 6. 21.