티스토리 뷰

728x90
반응형

 

 

1. mvnrepository 사이트에서 pom.xml에 추가할 mongoDB dependency를 복사해옵니다

https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-mongodb/2.6.7

 

Maven Repository: org.springframework.boot » spring-boot-starter-data-mongodb » 2.6.7

Starter for using MongoDB document-oriented database and Spring Data MongoDB org.springframework.boot spring-boot-starter-data-mongodb 2.6.7 // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-mongodb implementation grou

mvnrepository.com

 

 

2.  pom.xml에 몽고DB를 추가해줍니다

 

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

 

2. application.proerties 를 application.yml로 이름변경하고, 몽고DB접속 정보를 작성합니다

server:
  port: 8080

spring:
  data:
    mongodb:
      host: localhost
      port: 27017
      authentication-database: admin 
      database: test
      username: test_admin
      password: 1234

 

 

 

3. 몽고DB config 파일을 만들어줍니다.

파이썬에서는 생성되지 않는데 자바에서는 _class라는 필드가 _id처럼 자동으로 생성되므로

config 파일에 _class 필드가 생성되지 않도록 작성해주도록 합니다

 

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.convert.DbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;

@Configuration
public class MongoDBConfig {
    @Autowired private MongoMappingContext mongoMappingContext;
    
    @Bean
    public MappingMongoConverter mappingMongoConverter(
        MongoDatabaseFactory mongoDatabaseFactory,
        MongoMappingContext mongoMappingContext
    ) {
        DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDatabaseFactory);
        MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
        converter.setTypeMapper(new DefaultMongoTypeMapper(null));
        return converter;
    }
}

 

 

4. 컬렉션 DTO 및 DAO를 작성합니다

DTO에는 테스트를 위해 간단하게 사용자 정보를 넣었어요 

@Document 옆에 실제 몽고DB의 컬렉션명을 넣어주면 됩니다.

@Document(collection = "user")
public class User {
	@Id
	private String _id;
	private String userid;
	private String username;
	private String userpw;

}

 

 

다른 방법도 많지만 저는 Source에서 Generate Getters and Setters로 getter와 setter를 자동생성해주었어요

 

 

 

 

 

5. DAO에서는 userid를 통해 사용자정보를 가져오도록하고,

@Repository
public interface UserRepository extends MongoRepository<User, String>{
	public User findByUserid(String userid);
}

 

 

6. 컨트롤러에서 id를 기준으로 데이터를 조회해보고, html에 출력해보겠습니다 !

	@Autowired
	private UserRepository userRepository;
	
	@RequestMapping("/test")
	public String test(Model model) {
		System.out.println(userRepository.findByUserid("tester").getUsername());
        
        // html에 전송
		model.addAttribute("userid", userRepository.findByUserid("tester").getUserid());
        model.addAttribute("username", userRepository.findByUserid("tester").getUsername());
        
		System.out.println("=======");
        List<User> result = userRepository.findAll();
        for(User user : result) {
            System.out.println(user.getUserid());
            System.out.println(user.getUsername());            
        }
        System.out.println("=======");
        
        return "test";
    }

 

 

실행시켰을 때의 출력값입니다

왼쪽은 몽고DB GUI 이고, 오른쪽이 스프링 콘솔창이에요

제대로 값이 불러와진것을 확인할 수 있어요

 

 

 

test.html에는 input 태그 안에 출력되도록 작성해놓았습니다

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Insert title here</title>
    </head>
    <body>
        userid: <input type="text" th:value="${userid}">
        username: <input type="text" th:value="${username}">
    </body>
</html>

 

 

http://localhost:8080/test 으로 들어가보면 

호출한 사용자정보가 제대로 출력된 것을 확인할 수 있습니다 !

 

spring에 mongoDB 연동하기 끝!

 

728x90
반응형
댓글