Skip to content

Commit

Permalink
기본이 중요하다
Browse files Browse the repository at this point in the history
  • Loading branch information
K-Diger committed Nov 5, 2023
1 parent 39a546c commit dcae010
Showing 1 changed file with 88 additions and 0 deletions.
88 changes: 88 additions & 0 deletions _posts/2023-11-05-MongoDBWithSpringBoot.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
---

title: MongoDB와 Spring Boot 함께 사용하기
date: 2023-11-05
categories: [Java]
tags: [Java]
layout: post
toc: true
math: true
mermaid: true

---

# 연동 과정

## DBMS 셋팅

MongoDB에 접속해서 DB와 Collection을 생성해준다. 여기서 Collection은 RDBMS의 Table과 같은 개념이다.

---

## Spring Boot 셋팅

### Gradle 의존성 추가

아래 의존성을 추가한다.

```groovy
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
```

### Application.yml DBMS 경로 추가

```yaml
spring:
data:
mongodb:
uri: mongodb+srv://{USER_NAME}:{USER_PASSWORD}@{CLUSTER_NAME}.ho2nb0a.mongodb.net/{COLLECTION_NAME}?retryWrites=true&w=majority
```
위와 같이 UserName, Password, ClusterName, CollectionName을 정의해주면 끝난다.
---
# 너무 오랜만이라 까먹었던 직렬화 사용법 (Getter Method)
HTTP 응답 폼을 만들기 위해 아래와 같이 작성했는데 자꾸 빈 응답 값을 내려주는 현상이 발생했다.
```java
package com.diger.notonlysqlboard.util.responseform;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import org.springframework.http.HttpStatus;

@JsonInclude(JsonInclude.Include.NON_NULL)
@AllArgsConstructor
@NoArgsConstructor
public class ResponseForm<T> {

private Integer status;
private T data;

public static <T> ResponseForm<T> success(
HttpStatus httpStatus
) {
return new ResponseForm<>(
httpStatus.value(),
null
);
}

public static <T> ResponseForm<T> success(
HttpStatus httpStatus,
T data
) {
return new ResponseForm<T>(
httpStatus.value(),
data
);
}
}
```

직렬화 할 때 JVM 내부적으로 Getter메서드를 활용한다는 점을 깜빡하고 Getter를 추가하지 않았기 때문에 직렬화가 이루어지지 않게 되었다.

직렬화 대상을 다룰땐 Getter를 고려해야한다는 점을 잊지 않도록 주의하자!

0 comments on commit dcae010

Please sign in to comment.