도찐개찐
[SpringBoot] MongoDB 설치 및 MongoTemplate vs MongoRepository 빈등록 관리 본문
JAVA/SpringBoot
[SpringBoot] MongoDB 설치 및 MongoTemplate vs MongoRepository 빈등록 관리
도개진 2023. 7. 21. 10:221. spring-boot-starter-data-mongodb 의존성 주입
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-mongodb
상기 경로에서 본인 환경에 맞는 버전의 spring-boot-starter-data-mongodb 의존성을 주입해 줍니다.
# build.gradle
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-mongodb', version: '2.6.7'
# pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>2.6.7</version>
</dependency>
2. application.yml, application.properties 커넥션 정보 설정
// application.yml
server:
port: 8088
spring:
data:
mongodb:
host: localhost
port: 27017
authentication-database: admin
username: montest
password: montest!@34
database: montest
// application.properties
server.port=8088
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=montest
spring.data.mongodb.password=montest!@34
spring.data.mongodb.database=montest
mogodb.host -> 접속할 db의 ip 주소
mongodb.port -> 접속할 db의 port 번호
mongodb.authentication-database -> 접속할 계정이 위치한 db의 이름
* authentication-database는 MongoDB에서 인증을 수행할 때 사용하는 데이터베이스를 지정하는 속성입니다.
MongoDB는 사용자 인증에 데이터베이스 별로 다른 사용자 권한을 부여할 수 있습니다. 따라서, 어떤 데이터베이스에 대한 접근 권한이 있는지를 지정할 때, 해당 데이터베이스의 사용자 권한을 확인하려면 해당 데이터베이스에서 인증을 해야 합니다. 그러나 실제로는 많은 경우에 admin 데이터베이스에서 사용자를 관리하며, 다른 데이터베이스에 대한 접근 권한도 여기에서 관리됩니다.
예를 들어, mydb 데이터베이스에 접근 권한을 가진 사용자로 인증하려는데, 사용자 권한이 admin 데이터베이스에 저장되어 있다면 authentication-database 속성에 admin을 설정해야 합니다.
mongodb.database - > 접속할 database 이름
mongodb.username -> 접속할 계정 이름
mongodb.password -> 접속할 계정 비밀번호
3. MongoDB Collection 매핑 Document 객체 생성
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Data
@Document(collection = "user")
public class MongoUser {
@Id
private String _id;
private String userId;
private String userName;
private String userPwd;
private String userMobile;
}
4. MongoRepository 생성
MongoRepository 상속받고 직전 생성한 MongoUser Document를 매핑 할수 있게 작성해 줍니다.
JpaRepository, CrudRepository 작성 방법의 차이는 없습니다.
import com.example.mongotest.documents.MongoUser;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface MongoUserRepository extends MongoRepository <MongoUser, String> {
}
5. 실행 플로우 작성(run 파일 수정)
import com.example.mongotest.documents.MongoUser;
import com.example.mongotest.repository.MongoUserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.mongodb.core.MongoTemplate;
@SpringBootApplication
public class MongoTestApplication {
@Autowired
MongoUserRepository mongoUserRepository;
@Autowired
MongoTemplate mongoTemplate;
public static void main(String[] args) {
SpringApplication.run(MongoTestApplication.class, args);
}
@Bean
ApplicationRunner applicationRunner() {
return args -> {
// MongoRepository 를 이용한 데이터 등록
MongoUser mongoUser = new MongoUser();
mongoUser.setUserId("repository");
mongoUser.setUserName("몽고르포");
mongoUser.setUserPwd("repository1234");
mongoUser.setUserMobile("01011111111");
mongoUserRepository.save(mongoUser);
// MongoTemplate를 이용한 데이터 등록
MongoUser mongoUser2 = new MongoUser();
mongoUser2.setUserId("template");
mongoUser2.setUserName("몽고템");
mongoUser2.setUserPwd("template1234");
mongoUser2.setUserMobile("01022222222");
mongoTemplate.insert(mongoUser2);
};
}
}
5. 어플리케이션 실행(정상 등록 확인)
728x90
'JAVA > SpringBoot' 카테고리의 다른 글
[SpringBatch] Scheduled을 이용해 일정 시간 마다 코드 실행하기 (0) | 2023.09.05 |
---|---|
[SpringBoot] MongoDB에 _class 필드를 빼는 방법 (0) | 2023.07.21 |
[MyBatis] SqlSession (0) | 2023.02.21 |
[SpringBoot] Swagger API 문서 자동화 (0) | 2023.02.21 |
[SpringBoot] intelij resource 실시간 반영 (0) | 2022.10.29 |
Comments