Spring Boot MongoDB와 Redis 설정하기
안녕하신가 여러분.
요즘 회사일도 바쁘고 개인적으로 공부하는 것과 진행하는 프로젝트들에 치여서 포스팅이 뜸했는데 오늘 아주 짧게 포스팅할 주제가 있어 돌아왔다.
Spring boot가 좋은 점은 그냥 Maven이나 Gradle 설정에 원하는 라이브러리를 Dependency 해주고 application.properties 파일에 설정만 하면 바로 원하는 코드를 작성할 수 있으니 간편함의 끝이라고 할 수 있는데,
이번에 개인적으로 작업하는 프로젝트에서 MongoDB와 Redis를 사용하는 것이 좋겠다고 판단이 들었고 이를 셋팅하는 작업을 진행했다.
일단 이 포스팅은 아래의 조건이 충족한 상태에서 진행하면 되겠다.
- MongoDB 서버가 이미 설치되어 있을 것
- MongoDB의 Auth 설정이 true로 설정되어 있고 DB에 db.createUser를 통해 사용자를 추가해 놓을 것
- Redis 서버가 이미 설치되어 있을 것
- Redis 서버의 암호를 설정해 놓을 것
이번에 어차피 개발용이고 작업용으로 만들어서 Auth 설정도 없이 그냥 열어놨다가 외부에서 공격인지 뭔지 모르겠으나 쳐들어와서는 안에 있는 작업 내용 싹 날려버리곤 README라는 DB를 만들어서 데이터를 돌려받고 싶다면 비트코인을 달라는 메시지가 들어있더라.
지금 그 사이트를 어떻게 해야할지 심각하게 고민을 하는 중이다. 괘씸한것.
암튼 겸사겸사 DB도 새로 작업했고 설정정보도 추가해서 다시 셋팅한김에 포스팅을 해볼까 한다.
일단, pom.xml을 통해서 (나는 Gradle 보다는 Maven이 조금(?) 더 궁합이 맞는거 같다) 라이브러리를 추가한다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
이렇게하면 일단 필요한 라이브러리들을 다운로드 받을거다. 그러면 다음에 application.properties 파일에 설정 정보를 넣어주면 되는데 여기서 가끔 듣는 질문은 application.properties 파일이 어디있냐는 것인데 {프로젝트 경로}/src/main/resources 폴더에 있으니 잘 찾아보도록 한다.
spring.data.mongodb.host={접속할 IP}
spring.data.mongodb.database={접속할 DB명}
spring.data.mongodb.port={설정한 포트번호(기본: 27017)}
spring.data.mongodb.username={등록한 사용자 ID}
spring.data.mongodb.password={함께 등록한 사용자 패스워드}
spring.redis.host={접속할 IP}
spring.redis.password={설정한 암호}
mongodb의 버전에 따라서 host 방식과 uri 방식을 지원하는데에 제약사항이 있다고 들었는데(http://wonwoo.ml/index.php/post/1848) 나는 그냥 저렇게 host에 IP를 넣었더니 잘 동작했다. uri 방식은 한줄에 모든 셋팅을 넣을 수 있어서 좋다고는 하나 내가 보기엔 가독성이 떨어지는 기분이고 그 주소를 만들어 넣는 문법이 꽤 귀찮게 길게 되어있다.
암튼 위와같이 설정해 놓고 서버를 기동하면 아래와같이 설정된 내용들이 로그에 남게된다.
Congratulations @igna84! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
Award for the number of posts published
Click on any badge to view your own Board of Honor on SteemitBoard.
To support your work, I also upvoted your post!
For more information about SteemitBoard, click here
If you no longer want to receive notifications, reply to this comment with the word
STOP