1️⃣ MongoDB 설치 및 DB 생성
1. MongoDB Homebrew 추가
brew tap mongodb/brew
2. brew 업데이트
brew update
3. MongoDB 설치 진행
brew install mongodb-community@7.0
4. MongoDB 서버 시작 명령어
brew services start mongodb/brew/mongodb-community
5. MongoDB 서버 종료 명령어
brew services stop mongodb/brew/mongodb-community
6. MongoDB Compass (GUI) 설치
설치만 해두고 8 단계에서 DB 생성하겠습니다.
https://www.mongodb.com/try/download/compass
Try MongoDB Tools - Download Free Here
Free download for MongoDB tools to do more with your database. MongoDB Shell, Compass, CLI for Cloud, BI Connector and other database tools available.
www.mongodb.com
7. MongoDB 서버 켜주기
해당 파일을 클릭합니다.
위처럼 서버를 작동시키지 않을 경우 아래처럼 Exception opening socket 에러가 발생합니다.
8. DB 생성하기
1번에서 + 버튼을 누르면 Create Database 창이 뜹니다.
여기서 Database 이름과 collation 이름을 작성하고 4번 버튼을 클릭합니다.
collation 이란 RDBMS 에서 Table 과 동일하게 생각하면 됩니다.
그리고 1번의 새로고침 버튼을 클릭하면
5번에서 테이블이 생성된 것을 확인할 수 있습니다.
다음으로는 간단한 연결 테스트를 진행해보겠습니다.
2️⃣ 간단한 테스트 진행
1. application.yml 파일
spring:
application:
name: mongo
data:
mongodb:
uri: mongodb://localhost:27017/test
uri 는 MongoDB Compass 에서 1번, 2번의 순서로 클릭하면 쉽게 복붙할 수 있습니다.
2. document, repository 등 작성
* 정말 간단한 테스트를 진행할 예정이기 때문에 service 는 사용하지 않습니다.
* 추후 업데이트 예정입니다.
- document 작성
package domain.member.document;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collation = "{ 'locale': 'en' }")
@NoArgsConstructor
@Getter
public class Member {
private String name;
public Member(String name) {
this.name = name;
}
}
- repository 작성
package domain.member.repository;
import domain.member.document.Member;
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface MemberRepository extends MongoRepository<Member, ObjectId> {
public List<Member> findByName(String name);
}
- Main Application 작성
package mongostudy.mongo;
import domain.member.document.Member;
import domain.member.repository.MemberRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import java.util.Arrays;
import java.util.List;
@Slf4j
@SpringBootApplication(scanBasePackages = {"domain.member.repository", "mongostudy.mongo"})
@EntityScan(basePackages = "domain.member.document")
@RequiredArgsConstructor
public class MongoApplication implements CommandLineRunner {
private final MemberRepository memberRepository;
public static void main(String[] args) {
SpringApplication.run(MongoApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
Member member1 = new Member("강낭콩");
Member member2 = new Member("애호박");
Member member3 = new Member("고구마");
memberRepository.insert(Arrays.asList(member1, member2, member3));
List<Member> response = memberRepository.findByName("강낭콩");
log.info("response 확인용 : {}", response);
}
}
3. 실행하기
코드를 실행시키면 MongoDB Compass 에 데이터가 들어간 것을 확인할 수 있습니다.
3️⃣ 테스트 도중 발생했던 빈 등록 에러
충분히 @Repository 또는 @Document 와 같은 어노테이션을 선언해주었는데도 불구하고,
의존성 주입 에러, 빈 등록 에러와 같은 에러들이 발생하였습니다.
원인은 Main Application 의 경로와 다른 파일들의 경로가 달랐기 때문입니다.
위에 작성한 코드를 일부러 package 경로까지 기록한 점과 Main Application 에서 scanBasePackages 의 경로를 명시한 것을 보면 해결방법을 알 수 있습니다.
Main Application 의 경로와 다른 파일들의 경로가 같다면 scanBasePackages 를 사용하지 않아도 되지만 만약 다르다면 이 부분을 확인해보시기 바랍니다!
'DB > Mongo' 카테고리의 다른 글
[Mongo] 몽고에서 Criteria 빼고 Qclass 사용하기 (2) | 2025.02.02 |
---|---|
[Mongo] ObjectId 중복가능성 (2) | 2024.12.06 |