SpringBoot,WebFlux,MongoDB 채팅서버 만들기 (1)

작성자 : 조회수 :

사용 디비는 

MongoDB(NoSql)를 사용하려 합니다.


설치를 해주며 환경설정 패스를 설치파일 안의 bin 쪽으로 맞춰줍니다.

 

Yml 설정은 이렇게 합니다.



(MongoDB 컬렉션이란 -> DB 테이블과 비슷)

MongoDB 장점, 사용 이유

 

1.    중복을 허용한다.

2.    조인으로 select 하는게 아니라 한꺼번에 넣고 빼고 하는 식이라 데이터 찾기 성능이 좋다.

 

 


스프링 부트에 mongodb webflux 추가해준다.


// 몽고디비 , 채팅을 위해서

implementation 'org.springframework.boot:spring-boot-starter-data-mongodb-reactive'


implementation 'org.springframework.boot:spring-boot-starter-webflux'





WebFlux 무엇이고, flux mono 차이점이 무엇인지는 다음 글에서 설명하겠습니다.


다음과 같이 repository model 설정해줍니다. (collection mysql 테이블과 비슷합니다.)





중요했던 것은 반환형이였습니다.

 

Spring Flux 반드시 반환값이 Mono, 아니면 Flux형태여야 했습니다.

외의 반환 형식들은 모두 에러가 발생함을 직접 개발하면서 알아냈습니다. (다른 자료형으로 했다가 에러 발생함)

 

 

또한 Repository 안에서 @Tailable이라는 어노테이션도 중요했습니다.

해당 어노테이션을 달아주면 한번 셀렉트를 하고 끝나는게 아니라 계속 커서를 열어주어서

값을 들어오는 대로 받고 반환을 해주는 어노테이션 입니다.



필요한 서비스나 repository 끝났습니다. 이제

 

컨트롤은 알아서 지정해주고

 

아래처럼 저장만 하고 위의 mFindByRoomNum 플럭스로 계속 받아준다면








이런식으로 작동하는 것을 알수있습니다.


보충 설명이 필요하다고 느껴지면 추가로 더 적을 예정입니다.

 

출처

메타코딩

https://www.youtube.com/watch?v=Oo_eHCr_HsQ&list=PL93mKxaRDidHRYNYYFr1x3mLKIx1wFeFc