본문 바로가기
728x90

springboot12

@RestControllerAdvice로 ExceptionHandling 하기 ErrorCode api에서 사용하는 모든 에러코드를 모아 놓은 곳입니다. @Getter @RequiredArgsConstructor public enum ErrorCode { SERVER_ERROR(500, "서버 에러", 5000); private final int status; private final String message; private final int code; } status HttpStatus의 value 값 message 클라이언트에 보내줄 에러 메세지 code 해당 ErrorCode가 가지는 고유한 에러 매핑코드 ApiException RuntimeException을 상속받는 구현체. 실제로 에러를 발생시키는 Exception 객체이다. IllegalArgumentException.. 2020. 7. 15.
docker-compose 사용시 /usr/bin/env: ‘sh\r’: no such file or directory 에러 얼마전 사이드 프로젝트 환경 세팅하기 위해서 docker compose를 사용하면서 위와 같은 이슈가 발생했습니다. 개인적으로 사용하는 노트북이 맥 환경이었고 회사에서 잠깐 테스트로 작성하던 도중 발생한 이슈입니다. 문제 docker compose 실행 이후 아래와 같은 이슈 발생 /usr/bin/env: ‘sh\r’: no such file or directory 에러 원인 원인은 소스코드의 개행문자(줄바꿈) 처리가 OS에 따라 상이하다는 것입니다. 윈도우의 경우는 \r\n이고 유닉스 계열은 \n이 됩니다. 그래서 윈도우 환경의 소스코드를 docker compose로 생성된 리눅스 환경에 배포할 때, 개행문자를 잘못 인식하게 됩니다. 그래서 에러메세지 중 \r이 나오게 되는데 이것은 윈도우에서 생성된 .. 2020. 7. 15.
Interceptor 사용법 회사에서는 관리자 페이지의 보안을 OAuth2 방식으로 하고 있습니다. 유효한 토큰을 API에서 받아와 세선에 저장해놓고 request를 보낼 때 마다 세션에서 토큰이 유효한지 확인하는 작업을 하고 있습니다. 토큰은 클라이언트에서 쿠키로 관리하고 있으며 매 요청을 보낼 때마다 쿠키의 토큰을 확인하고 있습니다. 매 요청마다 session을 찾아 유효한 토큰이 있는지 살피다 보니 매우 반복적인 작업이 되었습니다. React를 사용하면서 Axios의 Interceptor 기능이 있었는데 서블릿에서 기본적으로 Interceptor를 제공해주고 있습니다. 이 방식은 매 요청이 이루어질 때마다 해야되는 작업이므로 수평적으로 관리해주어야 할 필요가 있습니다. 대표적인 방법들이 Filter, Interceptor, A.. 2020. 6. 18.
Intellij 스프링 부트와 npm 커맨드 함께 실행하기 최근에 스프링 부트 프로젝트에 webpack 설정을 해주었습니다. 매번 스프링 부트를 실행하면서 npm 커맨드를 따로 실행하는 것이 꽤나 번거로웠습니다. 두개의 run script를 Intellj로 실행하는 방법에 대해 소개해보겠습니다. 설정 먼저 오른쪽 상단에서 Edit Configuration을 클릭합니다. npm과 Spring Boot 커맨드를 각각 설정합니다. 그리고 왼쪽 상단에서 Add New Configuration을 클릭한 뒤 Compound를 찾습니다. Compound는 이름 그대로 run script를 모아놓은 공간이라고 생각하시면 됩니다. 이제 앞에서 설정해놓은 npm과 Spring Boot 커맨드를 이곳에 추가하시면 끝이 납니다. 이제 설정한 spring\_webpack을 실행 해주시.. 2020. 5. 15.
@DisplayName이 작동하지 않을 때 JUnit 5를 사용하면서 @DisplayName을 사용해도 아래처럼 테스트 메세지가 변하지 않을 때가 있습니다. @Test @DisplayName("테스트") void test() { ... } 설정 위의 경로로 가셔서 Run Test using을 Intellij IDEA로 변경해주시면 됩니다 Preference -> Build,Execution,Deployment -> Build Tool -> Gradle 그러면 아래처럼 기대했던 값을 원할 수 있습니다. 2020. 5. 10.
logback-spring.xml 설정 이후 배포 실패 1. 문제점 최근 스프링부트로 작업하는 프로젝트에 Logstash로 로그를 관리하기로 했습니다. 기존 프로젝트에 logback-spring.xml를 설정해주고 배포를 하니 503에러를 발생하고 있었습니다. 로컬에서는 별 문제 없었기에 배포 이후에도 문제될 것이 없다고 생각하였습니다. 젠킨스로 배포 시에도 에러 메세지 없이 잘 실행되었습니다. 2. 과정 2-1. 폴더 생성권한 처음드는 생각은 폴더의 권한 문제였습니다. 설정을 살펴보면, 로그는 var/log/admin 폴더 아래에 파일을 생성하도록 설정하였습니다. 로컬에서는 logbck 설정을 하면 자동적으로 폴더가 생성되었기에 그대로 배포를 하였습니다. 하지만 서버에서는 배포가 실패하면서 No such file or directory에러를 발생시키고 있었.. 2020. 4. 3.
728x90