본문 바로가기

트러블슈팅

[Spring] Spring boot 에서 mongoDB 붙이기

build.gradle 에 의존성 추가

implementation "org.springframework.boot:spring-boot-starter-data-mongodb:$springBootVersion"

application.yml 에 접속정보 추가

spring.data.mongodb.host, port... 등을 추가해야함

spring:
  data:
    mongodb:
      host: 
      port:

그 외 설정

DB 접속하는 빈 객체 만들거나 DB 접속 설정을 바꾸거나 하는 config 클래스를 만들수도 있다.
하지만 spring boot 에는 auto configuration 이라는게 있어서 알아서 해주는 듯(기본설정으로)
그래서 application.yml에 속성값만 바꾸면 됨

@ConfigurationProperties(prefix = "spring.data.mongodb") //application.yml 값 가져오기
@EnableMongoRepositories(basePackageClasses = arrayOf(MongoRepository::class))  
class MongoDBConfiguration : AbstractMongoClientConfiguration() {  
lateinit var database: String  
lateinit var host: String  
lateinit var port: String  
lateinit var username: String  
lateinit var password: String  

override fun getDatabaseName(): String {  
return database  
}  

override fun mongoClient(): MongoClient {  
return MongoClients.create("mongodb://${username}:${password}@${host}:${port}")  
}  
}

test 코드가 에러난 이유

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type...
이거 그냥 빈이 없다는 얘기임
@DataMongoTest -> 몽고 테스트용
@SpringBootTest -> 전체 빈 올려서 테스트 하는 것