스프링부트52 spring data MongoDB - auditing 설정 및 활용 Spring Data는 엔티티(도큐먼트)가 생성되거나 수정될 때 생성자, 수정자, 생성시간, 수정시간을 투명하게 추적할 수 있도록 Auditing 기능을 제공한다. 이번 포스팅에서는 spring data MongoDB 에서 Auditing 기능을 사용할 수 있는 방법에 대해서 정리하고자 한다. Auditing 기능 활성화@Configuration@EnableMongoAuditingpublic class MongoDBConfigurationByDirect {...}@EnableMongoAuditing 어노테이션은 Spring Data MongoDB에서 제공하는 auditing 기능을 활성화하기 위해서 사용한다.@EnableMongoAuditing을 사용하면 엔티티가 데이터베이스에 저장되거나 업데이트될 때 .. 스프링부트 2024. 2. 26. spring data MongoDB - Repository 사용하기 Spring Data MongoDB는 Spring 애플리케이션 내에서 데이터 액세스를 단순화하는 것을 목표로 하는 Spring Data 프로젝트의 일부이다. MongoDB와의 원활한 통합을 제공하여 CRUD 작업을 추상화하여 데이터베이스와 상호작용하는 생산적인 방법을 제공한다.Repository는 Spring Data 프레임워크의 핵심이며 데이터 액세스 계층에 대한 높은 수준의 추상화를 제공한다. 이번 포스팅에서는 Spring Data MongoDB에서 Repository를 이용하여 간단한 CRUD 작업을 수행하는 방법에 대해서 샘플 기반으로 소개하고자 한다. Core conceptsSpring Data Repository 추상화의 중심 인터페이스는 Repository다. Repository 인터페이스는.. 스프링부트 2024. 2. 20. spring data MongoDB - 필드 변환하기 (Converter) 이번 포스팅에서는 MongoDB 에서 특정 필드 타입에 대해서 값을 변환하거나 지정된 필드에 대해서만 값을 변환하는 방법과 함께 key 필드에 도트 문자('.')가 포함된 경우 에러가 발생하지 않도록 하는 방법에 대해서 소개하고자 한다. Document key 필드에 도트 문자가 포함된 경우 처리MongoDB의 Document key 필드에 도트 문자가 포함된 경우 다음과 같은 에러를 만날 수 있다.Map key {필드명} contains dots but no replacement was configured! Make sure map keys don't contain dots in the first place or configure an appropriate replacement!위 에러를 피하는 방법은.. 스프링부트 2024. 2. 4. spring data MongoDB - ScopedValue를 이용한 MongoDB multiple database 연결하기 MongoDB에서 다수의 데이터베이스를 운영해야 하는 경우 ScopedValue (JDK 21 preview)를 이용하여 동적으로 해당 데이터베이스에 연결하는 방법에 대해서 소개하고자 한다.많은 수의 데이터베이스가 동적으로 생성되는 경우에 유용할 것이라고 생각한다. (ex. 테넌트별로 데이터베이스를 생성해야 하는 경우)사용하는 데이터베이스 수가 정해져 있고 소수의 경우에는 각각의 데이터베이스에 대해서 Configuration 구성을 하는 방법도 있는데 해당 방법은 아래 링크를 참고하면 도움이 될 것 같다.https://www.baeldung.com/mongodb-multiple-databases-spring-dataScopedValue 대신에 ThreadLocal을 활용해도 되지만 ScopedValue에.. 스프링부트 2024. 1. 6. spring data MongoDB - MongoTemplate 설정하기 Spring data MongoDB의 핵심 역할을 하는 MongoTemplate과 반응형 대응 클래스는 org.springframework.data:spring-data-mongodb 모듈의 org.springframework.data.mongodb.core 패키지에 있다. MongoTemplate는 데이터베이스와 상호 작용하기 위한 풍부한 기능 세트를 제공하며 MongoDB Document를 생성, 업데이트, 삭제 및 쿼리 하기 위한 편리한 작업을 제공한다.이번 포스팅에서는 MongoTemplate을 구성하는 방법과 MongoTemplate의 여러가지 옵션에 대해서 정리해 보고자 한다.MongoClient는 MongoClientSettings와 함께 MongoDB 연결에 대한 설정을 하지만 MongoT.. 스프링부트 2024. 1. 1. spring boot data MongoDB - 연결 설정 하기 NoSQL 데이터베이스로 가장 많이 사용되고 있는 MongoDB를 spring boot data MongoDB 를 통해서 사용하는 방법에 대해서 정리해 보고자 한다. 샘플 코드는 spring boot 3.2.1 버전을 기반으로 작성하였다. Dependencygradleplugins { id 'java' id 'org.springframework.boot' version '3.2.1' id 'io.spring.dependency-management' version '1.1.4'}...dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' ...} spring boot Mon.. 스프링부트 2023. 12. 29. spring boot 가상 스레드 적용해보기 JDK 21부터 가상 스레드(virtual thread)가 정식 릴리즈 되었다. 또한 spring boot 3.2부터는 가상 스레드가 지원되어 spring boot 애플리케이션에서 가상 스레드를 시험해 볼 수 있게 되었다. 이번 포스팅에서는 spring boot 웹 애플리케이션에서 가상 스레드를 적용한 샘플코드를 작성해 보고 jmeter를 통해서 가상 스레드와 플랫폼 스레드의 처리량의 차이를 비교해 보고자 한다. 가상 스레드에 대한 내용은 다음 포스팅에서 정리하였다. 2023.11.24 - [자바] - java 21 처리량 향상을 위한 대안 - virtual thread 알아보자 2023.11.26 - [자바] - java21 - scoped value에 대해서 알아보자 사전 조건 virtual thre.. 스프링부트 2023. 12. 3. spring scheduler task에 shedlock + redis 적용방법 Spring 스케줄러를 사용하여 배치 작업 및 예약된 작업을 손쉽게 할 수 있지만 AWS ECS, EKS와 같은 클라우드 기반 분산 컴퓨팅 환경에서는 멀티 인스턴스로 서비스를 하는 경우가 많은데 이러한 경우 각 인스턴스의 스케줄 태스크를 동기화할 수 없어서 같은 태스크가 중복 실행이 되어 예기치 않은 문제를 만날 수 있다. ShedLock은 이러한 중복 실행 문제에 대해서 각 인스턴스 간의 잠금 처리를 제공하여 하나의 인스턴스에서만 태스크를 실행할 수 있도록 한다. (태스크에 잠금 이름을 지정하여 동일한 이름에 대해서 잠금이 동작하므로 더 좁은 의미로는 태스크 간의 잠금 처리라고 하는 게 맞을 것 같다.) ShedLock은 태스크 간의 락 처리를 위해서 MongoDB, JDBC, Redis, Hazelc.. 스프링부트 2023. 11. 20. spring multi module 프로젝트 만들기 이번 포스팅은 Creating a Multi Module Project 가이드 문서의 내용을 정리 요약한 것이다. Intellij IDE에서 Spring Boot로 다중 모듈 프로젝트를 생성하는 방법에 대해서 기록한다. 프로젝트에는 설정 파일의 내용을 주입받아 제공하는 라이브러리가 있고 해당 라이브러리를 사용하는 애플리케이션으로 2개의 프로젝트로 구성된다. 전체 소스 코드는 가이드 문서내에 github 링크가 포함되어 있다. Root 프로젝트 생성 루트 프로젝트에는 두 개의 자식 프로젝트를 생성해야 한다. - library, application library는 application 프로젝트에 종속된다. Maven Maven의 경우 가 포함된 pom.xml을 root 프로젝트에 정의한다. 4.0.0 or.. 스프링부트 2023. 11. 19. Spring REST 서비스 예외 처리 방법 Spring에서는 전체 예외 처리에 대한 추상화를 제공하고 몇 가지 annotation만으로 예외 처리를 손쉽게 할 수 있다. 이번 포스팅에서는 Spring REST 서비스에서 예외를 처리하는 방법과 HTTP 응답 상태코드를 반환하는 방법에 대해서 기록한다. 1. 예외 수동 처리 다음 Controller 코드는 HttpStatus와 함께 응답 body 페이로드를 포함하는 ResponseEntity를 반환한다. 예외가 발생하지 않으면 200 코드와 함께 body 페이로드로 Member를 응답한다. ResourceNotFoundException 예외가 발생하는 경우 empty body와 404 코드를 응답한다. MemberServiceException 예외가 발생하는 경우 empty body 와 500 코드.. 스프링부트 2023. 11. 9. 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. 3. 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. 이전 1 2 3 4 5 다음 💲 추천 글