Spring13 Spring Data JPA 에서 공간 정보(Spatial Data) 사용하기 Spatial Data Type은 공간 데이터를 저장하고 처리하기 위해 데이터베이스에서 제공하는 데이터 유형이다. 이 데이터 유형은 지리적인 위치 정보나 공간 상의 객체를 나타내는 데 사용된다. 일반적으로 데이터베이스 시스템에서는 Spatial Data Type을 지원하기 위한 확장 기능이 제공된다. Spring Data JPA + mariadb 간단한 샘플 코드를 통해서 Spatial Data Type을 사용하는 방법에 대해서 기록한다. 사전조건 로컬 환경에 mariadb 데이터 베이스가 실행되고 있다고 가정하겠다. mariadb 접속 정보 설정이 되어 있다고 가정하겠다. SpringBoot 3.1 이상 버전의 경우 springboot docker compose를 사용하여 mariadb 설치 및 설정 .. 스프링부트 2023. 11. 1. Spring REST 컨트롤러에서 HTTP 헤더 읽기 Spring 컨트롤러에서 HTTP 헤더를 읽는 방법을 소개한다. @RequestHeader annotation HttpServletRequest 인스턴스 @RequestHeader annotation Spring은 전체 또는 특정 헤더 값을 컨트롤러 메서드의 인수로 맵핑하는 @RequestHeader annotation을 제공한다. @RequestHeader annotation 유형은 파라미터이다. HashMap을 통한 HTTP 헤더 읽기 @RequestHeader annotation을 사용해 모든 HTTP 헤더를 Map 인스턴스에 맵핑한다. @PostMapping(value = "/read-header-map") public void readHeader(@RequestHeader Mapheaders) .. 스프링부트 2023. 10. 29. Spring에서 특정 HTTP 응답 상태 반환하기 클라이언트가 서버에 특정 HTTP 요청을 보내면 서버는 HTTP 응답 상태를 반환한다. 클라이언트는 응답 코드를 통해서 서버가 요청 처리를 실패했는지, 거부했는지, 성공했는지 알 수 있다. Spring 기반 애플리케이션에서 기본 프레임워크는 서버가 반환하는 모든 응답에 적절한 HTTP 응답 상태 코드를 자동으로 추가한다. 또한 Spring은 컨트롤러의 HTTP 응답 상태를 사용자 정의하는 방법도 제공한다. HTTP Response Status Code 1xx : 1로 시작하는 모든 상태 코드는 정보 코드이다. 2xx : 요청이 성공적으로 완료되었음을 나타낸다. 3xx : 리다이렉션을 나타낸다. 요청을 처리하기 위해 추가 조치가 필요하다. 4xx : 요청이 유효하지 않거나 완료할 수 없어 요청에 실패했다... 스프링부트 2023. 10. 28. spring boot 로그백 (logback) 설정 방법 logback은 log4j 프로젝트의 후속 버전으로 log4j 1.x가 중단된 이후 버전을 이어받아 발전시켜 왔다. spring boot는 기본적으로 logback 로깅 시스템을 채택하여 제공한다. logback-spring.xml 작성을 통해서 logback에 대한 확장 설정을 통해서 로그를 커스텀하게 기록할 수 있다. 이번 포스팅에서는 logback에 대한 몇 가지 중요한 내용에 대한 설명과 이를 활용하여 logback 확장설정(logback-spring.xml) 하는 방법에 대해서 기록한다. sprng boot dependency org.springframework.boot:spring-boot-starter-logging 종속성에 logback에 대한 종속성이 포함되어 있다. org.springf.. 스프링부트 2023. 10. 14. STOMP와 ACTIVEMQ를 이용한 메시지 broadcasting STOMP(Simple Text Oriented Messaging Protocol)은 중개 서버를 통해 클라이언트 간에 비동기 메시지를 전달하기 위해서 설계된 간단한 상호 운용 프로토콜이다. 이 프로토콜은 클라이언트와 서버 간에 전달되는 메시지에 대한 텍스트 기반 형식을 정의한다. STOMP는 활발히 사용되어 왔으며 많은 메시지 브로커와 클라이언트 라이브러리에서 지원되고 있다. STOMP는 TCP 및 웹소켓과 같은 신뢰할 수 있는 양방향 스트리밍 네트워크 프로토콜을 통해서 사용할 수 있다. ActiveMQ는 대표적인 메시지 브로커이고 STOMP를 지원한다. 이번 포스팅에서는 spring boot에서 STOMP와 ActiveMQ를 이용하여 메시지 broadcasting 하는 방법에 대해서 기록한다. Act.. 스프링부트 2023. 10. 11. spring boot scheduler basic Spring은 주기적인 작업을 자동으로 수행할 수 있도록 하는 scheduler를 제공하여 이를 간소화할 수 있다.Spring framework는 메서드 scheduling에 대한 지원을 제공한다. @Scheduled annotation을 사용하여 메서드를 예약된 메서드로 손쉽게 변환할 수 있다.@Scheduled annotation은 메서드 수준 annotation이며 Spring Bean 클래스의 메서드에 추가해야 한다.@Scheduled annotation 매개 변수를 제공하여 고정된 주기로 실행할지 또는 특정 시간 및 날짜에 실행할지 지정할 수 있다.이번 포스팅에서는 spring boot의 scheduler를 사용하는 방법과 properties에 대해서 기록한다. spring boot schedu.. 스프링부트 2023. 10. 9. spring boot kafka 연동하기 Spring에서 kafka 연동은 Apache kafka의 spring-kafka 프로젝트의 auto configuration 제공을 통해서 지원된다. kafka 설정은 spring.kafka.*의 외부 구성 속성에 의해서 설정할 수 있다. 이번 포스팅에서는 kafka messeage 송수신을 위한 auto configuration에 대해서 기록한다. dependencyspring boot에서 kafka를 사용하기 위해서 필요한 dependency는 아래와 같다. org.springframework.boot spring-boot-starter-parent 3.1.4 ... org.springframework.boot spring-boot-starter .. 스프링부트 2023. 10. 8. spring boot actuator health endpoints delay check spring boot actuator의 health check는 해당 서비스의 라이브 상태만을 체크 하는 것이 아니라 해당 서비스가 사용하고 있는 각종 endpoint들의 라이브 상태도 체크를 한다. 여기서 endpoint라는 것은 해당 서비스가 사용하고 있는 DB, Kafka, Redis, JMS와 같은 외부 인프라 서비스를 의미한다. 간혹 health check 수행 시간에 지연이 발생 하는 경우 어떤 endpoint에서 지연이 발생 하는지 확인이 필요한 경우가 있다. 이번 포스팅에서는 health check 대상 endpoint의 health check 수행 시간을 로그에 기록하도록 설정하는 방법에 대해서 기록한다. HealthContributer (HealthIndicator) spring boo.. 스프링부트 2023. 9. 22. spring boot websocket (웹소켓) websocket 프로토콜인 RFC 6455는 단일 TCP 연결을 통해 클라이언트와 서버 간에 양방향 통신 채널을 구축하는 표준화된 방법을 제공한다. websocket 프로토콜은 HTTP와는 다른 TCP 프로토콜이지만 포트 80과 443을 사용하고 기존 방화벽 규칙을 재사용할 수 있도록 설계되어 HTTP에서 작동하도록 설계 되었다. 가장 대표적인 사용은 웹채팅으로써 HTTP 상에서 상호 데이터를 주고 받는데 사용된다. 이번 포스팅 에서는 spring framework 공식 문서의 websocket 관련 내용을 정리하고 spring boot에서 websocket을 사용하기 위한 구성 및 방법을 기록한다. Upgrade Header websocket 상호작용은 HTTP 요청에 업그레이드 헤더를 사용하여 We.. 스프링부트 2023. 9. 20. spring boot application startup tracking spring boot 애플리케이션을 시작하는 동안 SpringApplication과 ApplicationContext는 애플리케이션 라이프사이클, 빈 라이프사이클, 애플리케이션 이벤트 처리와 관련된 많은 작업을 수행한다. Spring은 ApplicationStartup을 통해서 StartupStep 객체를 사용하여 애플리케이션 시작 과정을 추적할 수 있다. 추적 데이터는 프로파일링 목적으로 수집하거나 애플리케이션 시작 프로세스를 이해하는데 도움이 될 수 있다. spring boot 애플리케이션 시작 과정에 대한 추적 데이터를 얻는 방법에 대해서 기록한다. Spring Boot 2.4부터 ApplicationStartup 메트릭을 생성할 수 있게 되었다. 해당 메트릭에는 시작 과정에서 생성되는 각각의 이벤.. 스프링부트 2023. 9. 17. Spring SSE (Server Sent Event) 사용 방법 SSE (Server Sent Event)는 웹 어플리케이션에서 실시간 업데이트를 제공하는 데 사용되는 웹 기술 중 하나이다. Spring에서는 Spring MVC에서 사용되는 SseEmitter 클래스를 제공하여 손쉽게 SSE 스트림을 생성하고 클라이언트에게 이벤트를 푸시할 수 있도록 한다. 이를 통해 클라이언트가 연결을 유지하면서 서버로부터 데이터를 지속적으로 수신할 수 있도록 한다. 이번 포스팅에서는 Spring에서 SSE를 사용하는 방법에 대해서 기록한다. SSE (Server Sent Event) 특징 서버 -> 클라이언트 단방향으로 이벤트를 스트리밍 할 수 있도록 대부분의 브라우저에서 채택한 사양 이벤트 데이터는 UTF-8로 인코딩된 텍스트 데이터 스트림 이벤트 데이터 형식은 줄 바꿈으로 구분.. 스프링부트 2023. 9. 9. spring boot 필드값 조건별 validation 하기 - json subtype 앞선 포스팅에서는 custom annotation 을 만들어서 조건별 validation 을 적용하는 방법을 알아보았다. 이번 포스팅에서는 @JsonTypeInfo 와 @JsonSubTypes 어노테이션을 이용하여 조건별 validation 을 적용하는 방법을 기록한다. @JsonTypeInfo 와 @JsonSubTypes 는 특정 필드의 값에 따라서 Serialization, Deserialization 을 수행하는 클래스를 별도로 정의할 수 있다는 점에서 조건별로 validation 을 처리하는데 이용할 수 있을듯 하여 샘플을 만들어 보았다. 코드 구현 야구선수 등록 API 가 있고 야구선수 등록 데이터에는 uid, 이름, 선수타입, 타율, 홈런수, 방어율, 다승수 데이터가 있다. 선수타입에는 타자,.. 스프링부트 2023. 7. 29. 이전 1 2 다음 💲 추천 글