[Spring] Spring Boot로 MongoDB Atlas 사용하는 법
Spring Boot에서 MongoDB Atlas 사용하는 법
이번 글에서는 Spring Boot
로 MongoDB
Atlas를 사용하는 법에 대해서 정리해보려 합니다. 먼저 https://www.mongodb.com/cloud/atlas1 MongoDB Atlas 사이트에 먼저 접속하겠습니다.
MongoDB Atlas
를 사용하기 위해서는 회원가입
을 먼저 해야 합니다.
위에 자기의 정보에 맞게 입력 후에 회원가입을 하겠습니다.
저는 자바를 사용할 것이기 때문에 Java를 선택하고 다음을 누르겠습니다.
무료 버전을 사용할 것이기 때문에 FREE
를 선택하고 나머지는 기본 설정대로 두고 만들겠습니다.
그리고 1~3분 정도 기다리면 클러스터가 하나 생성이 됩니다. 생성이 되었다면 Connect
를 눌러서 DB User 계정을 생성하겠습니다.
그리고 위에서 유저 계정을 하나 만들겠습니다. 이것은 디비에 접속할 때 중요한 정보이기 때문에 본인이 잘 기억할 수 있고 안전하게 정해서 만드는 것을 추천드립니다.
그리고 Java
를 사용할 것이기 때문에 자바를 선택하고 복사 버튼
을 누르겠습니다.(application.yml 에서 사용할 예정)
mongodb+srv://<UserName>:<password>@<클러스터이름>.ergif.mongodb.net/<dbName>?retryWrites=true&w=majority
IP 등록하기
MongoDB Atlas는 네트워크 설정에 등록되어 있는 IP만 접근할 수 있습니다. 그래서 위와 같이 IP 주소를 등록하는 과정이 필요합니다.
위의 보이는 것처럼 클릭을 하면 본인이 사용하고 있는 IP가 자동으로 뜰 것입니다. ADD IP Address
를 누르겠습니다.
데이터베이스 생성
본인이 사용할 데이터베이스, 컬렉션 이름을 정하고 생성을 누르겠습니다.
Spring Boot 간단한 예제
현재 제가 만든 프로젝트의 구조는 위와 같습니다. 먼저 MongoDB 의존성
을 추가하겠습니다.
build.gradle
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
그리고 application.yml
에 DB 설정을 하겠습니다.
application.yml
spring:
data:
mongodb:
uri: mongodb+srv://<유저이름>:<비밀번호>@<클러스터이름>.ergif.mongodb.net/<데이터베이스이름>?retryWrites=true&w=majority
uri에 위에서 만든 유저이름
, 비밀번호
, 클러스터이름
, 데이터베이스이름
을 자신의 정보에 맞게 넣어주면 됩니다.
Document
@AllArgsConstructor
@Getter
@Document("alarm_log")
public class AlarmLog {
@Id
private Long id;
private String title;
private String message;
}
그리고 위에서 만든 컬렉션
과 해당 클래스가 매칭되도록 간단하게 만들었습니다. 이것을 가지고 MongoDB Atlas
에 INSERT를 할 것입니다.
Service
@RequiredArgsConstructor
@Service
public class UserService {
private final MongoTemplate mongoTemplate;
public void mongoInsert() {
AlarmLog alarmLog = new AlarmLog(1L, "제목", "메세지");
mongoTemplate.insert(alarmLog);
}
}
그리고 MongoTemplate
를 사용해서 AlarmLog
클래스를 INSERT 하는 아주 간단한 코드를 작성했습니다. 실제로 위의 코드를 실행하면 아래와 같이 잘 INSERT 되는 것도 확인할 수 있습니다.
자세한 코드가 궁금하다면 Github 에서 확인할 수 있습니다.
에러 정리
접속하다가 위와 같은 에러를 만난다면 atlas
에서 IP 주소
를 등록하지 않아서 그렇습니다.
위와 같이 네트워크 설정에서 IP 등록이 되어 있어야 합니다.