본문 바로가기

dev/스프링

(41)
Spring ClassPathResource 스프링에서 ClassPathResource 클래스를 통해 resources 디렉토리에 있는 파일을 읽을 수 있습니다. ClassPathResource 클래스는 자바 어플리케이션에서 classpath에 있는 리소스를 읽고 로드하는 역할을 맡고 있습니다. 예제 테스트 코드는 resources 디렉토리에 있는 "test.txt" 파일을 1줄씩 읽어서 출력하고 있습니다. try-with-resources를 통해 메모리 반환을 자동으로 처리하고 있습니다. AutoClose 인터페이스를 구현한 객체는 try-with-resources에서 자동으로 메모리를 반환합니다. 예제 테스트 코드를 실행하면 정상적으로 파일 내용이 출력되는 것을 확인할 수 있습니다. application.yml 외에 다른 파일을 읽어서 로드해야..
Spring Controller ResponseEntity Spring에서 개발할 때 컨트롤러 return 타입으로 주로 String, Map, List 등을 사용합니다. 간단하게 사용할 수 있어서 편리한 장점이 있지만 복잡한 HTTP 응답이 필요한 경우 ResponseEntity를 사용하면 됩니다. 위의 코드를 보면 Map을 통해 응답하는 것을 확인할 수 있습니다. 이전 코드와 비교하면 HTTP 상태 코드가 추가된 것을 확인할 수 있습니다. setString 메소드는 201 코드를 리턴하고(37라인), getString 메소드는 200 코드를 리턴합니다(50라인). 각 메소드의 리턴 타입인 ResponseEntity의 제너릭 타입은 HTTP 본문 타입에 대한 것입니다. Void는 본문이 없는 것이고, String은 본문이 문자열 타입인 것을 가리킵니다. 기존에..
Spring RestControllerAdvice 스프링 컨트롤러에서 예외 처리를 try-catch가 아닌 다른 방법으로 처리하는 방법이 있습니다. @RestControllerAdvice를 사용하는 방법인데 try-catch를 일일이 사용하는 것이 아니라 한 군데에서 처리할 수 있습니다. 위의 예제 코드를 보게 되면 try-catch를 사용해 예외를 처리하고 있습니다. 이렇게 하면 중복되는 코드가 많아지고 가독성도 떨어져서 좋은 방법이 아닙니다. @RestControllerAdvice를 사용하면 예외를 전역적으로 처리할 수 있습니다. @ExceptionHandler는 특정 예외가 발생했을 때 해당 예외를 처리하는 어노테이션입니다. Exception 예외 처리는 17~28라인 handleException 메소드에서 처리하고 RedisConnectionFa..
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..
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 웹 소켓은 웹 브라우저와 서버 사이에 양방향으로 데이터를 전송해 주는 통신 기술입니..
Spring Boot Redis Subscriber 저번에 작성한 Spring Boot Redis Publisher에 이어 Subscriber 구현하는 방법입니다. spring-boot-starter-data-redis 라이브러리를 추가합니다. Redis 채널로부터 메시지를 수신하는 설정 클래스입니다. application.yml에 있는 Redis 메시지 채널명을 속성으로 받습니다.(18 ~ 19라인) Redis 메시지 수신 담당하는 redisSubscriberService 빈을 주입받습니다.(21 ~ 22라인) Redis 메시지 수신하는 컨테이너를 빈으로 등록합니다.(24 ~ 32라인) redisConnectionFactory를 통해 Redis에 연결하고, messageListenerAdapter를 통해 실제 메시지를 수신하는 리스너를 등록합니다. Re..
Spring Boot Redis Publisher 스프링 부트로 Redis Publisher 간단하게 구현하는 방법입니다. 스프링 부트와 Redis를 연계하기 위해 spring-boot-starter-data-redis 라이브러리를 추가합니다. 클라이언트로부터 채널명과 메시지를 받는 컨트롤러를 생성합니다. 채널명과 메시지를 Post 방식으로 받는 publish 메소드를 작성합니다.(21 ~ 33라인) 채널명과 메시지가 HttpBody로 전달되는 것을 자바 객체로 변환하기 위해 @RequestBody와 도메인 객체(RedisDomain 클래스)를 사용합니다.(22라인) Redis에 메시지를 발행하는 서비스의 메소드를 호출합니다.(26라인) Redis 데이터 연산처리를 하는 RedisTemplate를 주입받아 생성합니다.(14 ~ 17라인) 컨트롤러에서 전..
Spring Boot Session Store Type Redis 스프링 부트에서 세션을 redis에 저장하는 방법입니다. 저번에 세션 클러스터링 하는 방법으로 JDBC로 DB에 저장하는 글을 올렸는데 JDBC를 사용하는 것은 디스크 IO를 사용하기 때문에 성능면에서 부족한 점이 있습니다. https://tiqndjd12.tistory.com/253 Spring Boot Session Store Type JDBC 스프링 부트에서 세션은 주로 메모리에 저장합니다. 하지만 이렇게 했을 때 어플리케이션을 재부팅하면 세션이 초기화되는 단점이 있습니다. 이런 문제점을 해결하려면 어플리케이션 간의 세 tiqndjd12.tistory.com 이전에 작성한 스프링 부트 세션 JDBC에 이어서 하겠습니다. pom.xml에서 기존 spring-session-jdbc는 주석처리하고 spr..