본문 바로가기

Spring Controller ResponseEntity Spring에서 개발할 때 컨트롤러 return 타입으로 주로 String, Map, List 등을 사용합니다. 간단하게 사용할 수 있어서 편리한 장점이 있지만 복잡한 HTTP 응답이 필요한 경우 ResponseEntity를 사용하면 됩니다. 위의 코드를 보면 Map을 통해 응답하는 것을 확인할 수 있습니다. 이전 코드와 비교하면 HTTP 상태 코드가 추가된 것을 확인할 수 있습니다. setString 메소드는 201 코드를 리턴하고(37라인), getString 메소드는 200 코드를 리턴합니다(50라인). 각 메소드의 리턴 타입인 ResponseEntity의 제너릭 타입은 HTTP 본문 타입에 대한 것입니다. Void는 본문이 없는 것이고, String은 본문이 문자열 타입인 것을 가리킵니다. 기존에..
석유 시추 프로그래머스에서 석유시추 문제를 풀었습니다. https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제에 대한 설명은 위의 링크에서 확인하시면 됩니다. 이 문제를 풀 때 Stack을 사용해서 DFS로 풀었습니다. 각 석유 시추관의 위치에서 추출할 수 있는 석유량을 저장하는 배열 oilArr을 생성합니다.(43라인) 석유 탐색하는 방향을 저장하는 di배열, dj배열을 생성합니다.(46 ~ 47라인) 석유 탐색이 가능한 석유 시추관 조회합니다.(49 ..
110 옮기기 프로그래머스에서 110 옮기기 문제를 풀었습니다. https://school.programmers.co.kr/learn/courses/30/lessons/77886 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제에 대한 설명은 위의 링크에서 확인하시면 됩니다. 문자열을 문자 단위로 스택에 저장합니다.(35 ~ 50라인) Stack 사이즈가 2개 이상인 경우 Stack의 마지막 2개의 문자와 현재 문자를 110인지 비교합니다. 110인 경우 StringBuilder 클래스 stdSb 객체에 저장하고, 아닌 경우 Stack에 문자들을 저장합니다.(36 ~..
숫자 변환하기 프로그래머스에서 숫자 변환하기 문제를 풀었습니다. https://school.programmers.co.kr/learn/courses/30/lessons/154538 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제에 대한 설명은 위의 링크에서 확인하시면 됩니다. 최소 연산 횟수를 구하기 위해 BFS로 풀었습니다. 숫자와 연산 횟수를 저장하는 배열을 큐에 저장합니다.(32 ~ 33라인) 0번째 인덱스는 현재까지 연산한 숫자이고, 1번째 인덱스 현재까지 연산한 횟수입니다. 연산한 숫자 여부를 저장하는 set을 생성합니다.(35 ~ 36라인) set은 BF..
Spring RestControllerAdvice 스프링 컨트롤러에서 예외 처리를 try-catch가 아닌 다른 방법으로 처리하는 방법이 있습니다. @RestControllerAdvice를 사용하는 방법인데 try-catch를 일일이 사용하는 것이 아니라 한 군데에서 처리할 수 있습니다.  위의 @RestControllerAdvice 적용 전 컨트롤러 코드를 보게 되면 try-catch를 사용해 예외를 처리하고 있습니다. 이렇게 하면 중복되는 코드가 많아지고 가독성도 떨어져서 좋은 방법이 아닙니다.   @RestControllerAdvice를 사용하면 예외를 전역적으로 처리할 수 있습니다.  @ExceptionHandler는 특정 예외가 발생했을 때 해당 예외를 처리하는 어노테이션입니다. Exception 예외 처리는 17~28라인 handleExcep..
Spring Boot Redis 연계 스프링 부트에서 Redis에 데이터를 저장하고 조회하는 방법입니다. Redis에서 지원하는 데이터 구조 String, List, Hash를 사용할 것입니다. 스프링 부트와 Redis를 연계하기 위해 spring-boot-starter-data-redis 라이브러리를 추가합니다. RedisConfig 클래스는 Redis와의 연결과 데이터 직렬화를 설정하는 역할을 맡고 있습니다. application.yml에 있는 Redis host와 port를 속성으로 받습니다.(16 ~ 20라인) RedisStandaloneConfiguration 클래스를 통해 Redis 연결 설정을 구성하고 LettuceConnectionFactory 클래스를 통해 실제 Redis에 연결하는 빈을 등록합니다.(22 ~ 29라인) Re..
docker log rolling json 도커 컨테이너 로그에 rolling을 설정할 수 있습니다. rolling을 설정하지 않으면 로그 파일이 무한정 커지는 단점이 발생합니다. 이렇게 되면 로그를 확인하는 데 불편함이 있기 때문에 로그 rolling을 적용해야 합니다. 위의 화면은 nginx에 로그 rolling을 적용하고 있고 옵션은 다음과 같습니다. --log-driver=json-file: 로깅 드라이버를 json-file로 설정하고 있습니다. --log-opt max-size=1m: 로그 파일의 최대 크기를 1MB로 지정하고 있습니다. --log-opt max-file=3: 로그 파일의 최대 파일 수를 3개로 지정하고 있습니다. 3개를 넘어가게 되면 오래된 로그파일을 삭제합니다. nginx 컨테이너의 로그파일을 조회하면 앞에서 설정한 ..
Spring Boot Redis Suscriber WebSocket Redis 채널로부터 수신한 메시지를 Sprinb Boot에서 웹 소켓으로 표출하는 방법입니다. https://tiqndjd12.tistory.com/260 Spring Boot Redis Subscriber 저번에 작성한 Spring Boot Redis Publisher에 이어 Subscriber 구현하는 방법입니다. spring-boot-starter-data-redis 라이브러리를 추가합니다. Redis 채널로부터 메시지를 수신하는 설정 클래스입니다. application.yml tiqndjd12.tistory.com https://tiqndjd12.tistory.com/197 Spring Boot WebSocket 웹 소켓은 웹 브라우저와 서버 사이에 양방향으로 데이터를 전송해 주는 통신 기술입니..