- Spring Boot Embedded Tomcat 서버 설정알쓸개잡Spring Boot 애플리케이션은 tomcat, jetty, undertow 내장 서버를 사용할 수 있지만 디폴트 내장 서버는 tomcat을 사용한다. tomcat 내장 서버를 바로 사용할 수 있는 기본 구성 세트가 있지만 속성 또는 yaml 파일을 이용하여 내장 톰캣 서버를 구성하고 기본 설정을 변경할 수 있다. 내장 서버 autoconfiguration spring-boot-autoconfigure에 포함된 내장 서버 관련 auto configuration 관련 코드는 다음 패키지에 있다. org.springframework.boot.autoconfigure.web.embedded 내장 서버 관련 설정 클래스는 org.springframework.boot.autoconfigure.web.Server..
- 2023-11-03 00:55:43
- 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-01 09:33:43
- 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 22:56:29
- Spring에서 특정 HTTP 응답 상태 반환하기알쓸개잡클라이언트가 서버에 특정 HTTP 요청을 보내면 서버는 HTTP 응답 상태를 반환한다. 클라이언트는 응답 코드를 통해서 서버가 요청 처리를 실패했는지, 거부했는지, 성공했는지 알 수 있다. Spring 기반 애플리케이션에서 기본 프레임워크는 서버가 반환하는 모든 응답에 적절한 HTTP 응답 상태 코드를 자동으로 추가한다. 또한 Spring은 컨트롤러의 HTTP 응답 상태를 사용자 정의하는 방법도 제공한다. HTTP Response Status Code 1xx : 1로 시작하는 모든 상태 코드는 정보 코드이다. 2xx : 요청이 성공적으로 완료되었음을 나타낸다. 3xx : 리다이렉션을 나타낸다. 요청을 처리하기 위해 추가 조치가 필요하다. 4xx : 요청이 유효하지 않거나 완료할 수 없어 요청에 실패했다...
- 2023-10-28 23:02:27
- 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은 반송경로 표기를 의무화 하지..
- 2023-10-28 01:04:53
- 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..
- 2023-10-23 19:52:16
- 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 22:25:19
- 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 00:49:36
- 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 10:27:30
- 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 01:08:45
- 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 01:22:40
- 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 23:53:33
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)