분류 전체보기91 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. Email SPF (Sender Policy Framework) Email에서 기본적으로 보안상 중요한 것은 송신자 인증 처리이다. 이메일의 송신자 인증처리 중 대표적인 것이 DKIM, DMARC, SPF 가 있는데 이 중에서 SPF에 대해서 기록한다. SPF (Sender Policy Framework) SPF는 일종의 메일 발송 서버 등록 제도로 해당 도메인을 통해서 이메일을 보낼 수 있도록 허용된 IP 주소를 지정할 수 있다. DNS 에 등록된 TXT 타입의 레코드를 통해서 도메인에 대한 허용된 메일 발송 IP를 정의할 수 있다. SPF 운영 HELO, MAIL FROM identity (SPF 체크 대상 도메인) SMTP 프로토콜 상의 MAIL FROM 명령은 반송경로(reverse-path)를 표기하는데 사용됨. RFC 2811은 반송경로 표기를 의무화 하지.. ETC 2023. 10. 28. bitbucket pipeline을 이용한 AWS ECS 애플리케이션 배포 bitbucket은 aws-ecs-deploy 플러그인을 제공하여 손쉽게 AWS ECS 서비스에 애플리케이션을 배포할 수 있도록 한다. AWS CodeDeploy나 CodePipeline을 통해서 배포할 수도 있겠지만, 이번 포스팅에서는 bitbucket pipeline을 통해서 AWS ECS에 애플리케이션을 배포하는 방법에 대해서 소개한다. 사전 조건 Docker Hub 혹은 AWS ECR과 같은 image registry가 필요하다. AWS ECS Service 구성이 필요하다. RegisterTaskDefinition 및 UpdateService 권한이 있는 AWS IAM 사용자가 필요하다. 해당 bitbucket repository에 bitbucket pipeline 사용 설정이 필요하다. AWS.. AWS 2023. 10. 23. REST PUT vs PATCH Spring REST 서비스 예제를 통해서 HTTP PUT과 HTTP PATCH 요청 메서드에 대한 차이점에 대해서 알아보자. HTTP PUT vs PATCH PUT과 PATCH는 모두 요청 URI로 표시된 리소스를 수정하는 데 사용되지만 약간의 차이점이 있다. HTTP PUT 요청 메서드 새 리소스를 생성하거나 대상 리소스를 요청 페이로드에 제공된 리소스로 대체된다. 멱등성이 유지되어 사용자가 같은 요청을 반복해도 동일한 결과를 얻는다. PUT 요청의 전제 조건은 요청 본문에 리소스에 대한 완전한 데이터를 보내는 것이다. 리소스를 부분적으로 수정하려는 경우라도 수정되지 않는 나머지 필드를 모두 포함시킨다. 요청에 변경되지 않는 필드가 포함되어 있지 않은 필드는 서버에서 null 값을 채운다. HTTP .. 스프링부트 2023. 10. 22. spring boot 3.1 docker compose support spring boot 3.1부터 docker compose를 지원한다. docker compose를 수행하기 위한 yaml 정의 파일이 있다면 spring boot에서 docker compose를 자동으로 실행하여 container를 실행시키고 ConnectionDetails 추상화를 통해서 자동으로 연결을 설정한다. 이를 통해서 로컬 환경에서 애플리케이션 구동을 위해서 수동으로 docker container를 실행시키고 애플리케이션 설정에서 외부 서비스 연결에 대한 설정을 따로 지정하지 않아도 된다. 이번 포스팅에서는 spring boot docker compose에 대해서 기록한다. ConnectionDetails 추상화에 대한 설명은 Spring Boot 3.1's ConnectionDetails .. 스프링부트 2023. 10. 22. spring boot container 기반 테스트 spring boot application 테스트를 위해서 혹은 로컬에 개발 테스트 환경을 구축하기 위해서 3rd party 서비스를 로컬 환경에 설치하거나 embedded 서비스를 사용하여 테스트를 하는 경우가 많다. 이러한 작업은 꽤 번거로운 일이 될 수 있는데 TestContainers를 이용하여 손쉽게 container 기반의 테스트를 수행할 수 있다. 이번 포스팅에서는 샘플 코드를 기반으로 spring boot에서 TestContainers를 이용하는 방법에 대해서 기록한다. spring boot 3.1.4 버전에서 샘플코드를 작성하였다. spring boot 3.1 버전 부터 ConnectionDetails 추상화 기능이 추가되어 TestContainers에 대한 몇 가지 개선사항이 있는데 해.. 스프링부트 2023. 10. 19. java collection sort using Comparator java collection 프레임워크에서 Comparator 인터페이스를 이용하여 sorting 처리 방법에 대해서 기록한다. Comparator 인터페이스 Comparator 인터페이스는 int compare(T o1, T o2) 형태의 FunctionalInterface이다. Comparator 인터페이스 구현체를 collection 인스턴스의 sort() 메서드에 전달할 수 있다. sort() 메서드 내부적으로 Comparator 인스턴스의 compare() 메서드를 호출한다. sort() 메서드는 내부적으로 인자로 전달된 Comparator 인스턴스의 compare() 호출의 결과가 > 0인 경우 swap 한다. Comparator.comparing() Comparator 인스턴스는 몇 가지 .. 자바 2023. 10. 17. 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. spring boot logging Spring Boot에는 일반적으로 Spring 프레임워크의 spring-jcl 모듈에서 제공하는 Commons Logging API를 제외하고는 필수 로깅 종속성이 없다. Logback을 사용하려면 클래스 경로에 Logback과 spring-jcl을 포함시켜야 한다. 이를 위해서 spring-boot-sterter-logging 종속성을 추가하면 된다. 웹 애플리케이션의 경우 spring-boot-starter-web이 spring-boot-starter-logging 종속성을 포함하고 있기 때문에 spring-boot-starter-web 종속성만 추가하면 Logback을 사용할 수 있다. 정확하게 말하자면 spring-boot-starter-logging 의존성은 spring-boot-starter.. 스프링부트 2023. 10. 12. STOMP와 ACTIVEMQ를 이용한 메시지 broadcasting STOMP(Simple Text Oriented Messaging Protocol)은 중개 서버를 통해 클라이언트 간에 비동기 메시지를 전달하기 위해서 설계된 간단한 상호 운용 프로토콜이다. 이 프로토콜은 클라이언트와 서버 간에 전달되는 메시지에 대한 텍스트 기반 형식을 정의한다. STOMP는 활발히 사용되어 왔으며 많은 메시지 브로커와 클라이언트 라이브러리에서 지원되고 있다. STOMP는 TCP 및 웹소켓과 같은 신뢰할 수 있는 양방향 스트리밍 네트워크 프로토콜을 통해서 사용할 수 있다. ActiveMQ는 대표적인 메시지 브로커이고 STOMP를 지원한다. 이번 포스팅에서는 spring boot에서 STOMP와 ActiveMQ를 이용하여 메시지 broadcasting 하는 방법에 대해서 기록한다. Act.. 스프링부트 2023. 10. 11. 이전 1 2 3 4 5 6 7 8 다음 💲 추천 글