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
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 를 사용하지 않아도 되지만 만약 다르다면 이 부분을 확인해보시기 바랍니다!
'데이터베이스 > Mongo' 카테고리의 다른 글
[Mongo] ObjectId 중복가능성 (2) | 2024.12.06 |
---|