티스토리 뷰
1. mvnrepository 사이트에서 pom.xml에 추가할 mongoDB dependency를 복사해옵니다
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-mongodb/2.6.7
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 연동하기 끝!
'프로그래밍 > Java' 카테고리의 다른 글
[java-Tablesaw] java jTablesaw tutorial! jTablesaw 기초사용법 (0) | 2022.05.18 |
---|---|
[spring] java spring에서 파일업로드 시 MaxUploadSizeExceeded 오류 해결 (0) | 2022.05.17 |
[java] 자바에서 이미지 배경색 투명으로 만드는 방법 (0) | 2022.04.05 |
[java/geotools] HeatMap WMS API 만드는 방법 (0) | 2022.04.04 |
[java] Unexpected character ('<' (code 60)) 오류해결 (0) | 2022.03.22 |