[게시판 서버] 기본 유저 기능
프로그래밍 언어 및 기타/Spring Boot

[게시판 서버] 기본 유저 기능

https://github.com/sglee487/isolia-spring-api/tree/a361bbd46efc06231fce326236405b9300784743

 

GitHub - sglee487/isolia-spring-api: change FastAPI to Spring boot

change FastAPI to Spring boot. Contribute to sglee487/isolia-spring-api development by creating an account on GitHub.

github.com

 

일단 프로젝트 구조는

https://www.inflearn.com/course/java-to-kotlin-2/dashboard

 

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링) - 인프

Java + Spring Boot로 만들어진 웹 애플리케이션을 Kotlin + Spring Boot로 리팩토링 하고 추가 요구사항을 구현합니다. 이 과정에서 Junit5, SQL, JPA, Querydsl 을 사용할 뿐 아니라, 설계 및 구현 관점에서 다양

www.inflearn.com

여기 강의에서 가져왔다. 현업에서 일했던 사람이 그렇다고 하면 걍 그런갑다 한다.

 

 

url 받는 관리는 Controller를 만들어서 받고, 모델 엔터티는 domain, 실제 DB와 주고받는 코드는 repository로, controller에서 받은 요청은 service에서 처리, 또 테스트를 따로 만들었다.

 

신기했던건 나도 개인적으로 만들었을 때 실제 DB와 주고받는 코드를 DBManasger로 따로 분류했었는데, DB가 바뀌는 경우, 가령 일반 SQL문을 사용하는 DB였다가 NOSQL로 바뀐다던지 하면 따로 분류해놔야 해당 코드만 건드리면 되었기 때문.

그냥 그렇다고..

 

그래서 일단 url부터 만들기 위해 controller부터 생성하며 진행했었다.

회원가입, 로그인은 둘다 비밀스런 내용 공유라 post로 진행해야 하는데, 이름이 겹치니 login용 url은 따로 만들어 진행한다. 업데이트는 patch.

그리고 controller에서 service를 사용하는 방식으로 진행한다. 진짜 순수 http 작업용들은 controller에서 처리하고, 안의 처리 내용들은 service에서 작성하는게 나은 듯 하다.

 

 

Controller에 http 요청을 할 때 지정한 형식으로 들어오게 끔 dto를 정의하고 처리한다.

이후는 정말 제대로 되는지 실행하고 postman으로 테스트해보면 된다. 테스트코드는 좀 있다가 작성했었다.

 

 

 

여기서 이질감이 들었던 건 JpaRepository인데, 난 분명 interface로 구현했음에도 상속하기만 하면 기본적인 save, find같은 함수는 사용할 수 있었고, 더 필요하면 이미 사전에 있는 함수 이름을 잘만 써서 사용하면 그냥 별다른 정의 없이 사용할 수 있다는거. 즉 SQL문의 insert 이런거 정의해서 사용할 필요가 없다.

 

FastAPI에서 ORM을 구하기 위해 SQLAlchemy를 설치해서 DB주소 연결시키고 했던 XX쑈와는 다르게 이미 ORM이 다 갖춰져 있었고, 거기다 user table같은 경우도 내가 만들어서 할 필요 없이 @Entity만 해주면 클래스 안에 있는 val들을 기준으로 알아서 잘 저장이 되어 있던 것. 즉, 진짜 DB 생각 안하고 클래스의 인스턴스처럼 사용할 수 있다.

이게 언어의 짬이며, 사람들이 왜 구린내나는 자바를 포기 못하고 현업에 쓸 수 밖에 없는지 이해할 수 있었던 시간이었다...

 

 

 

 

여기까지 한 다음 unittest 작성을 했었다.

https://github.com/sglee487/isolia-spring-api/blob/a361bbd46efc06231fce326236405b9300784743/src/test/kotlin/com/group/isolia_api/service/user/UserServiceTest.kt

 

GitHub - sglee487/isolia-spring-api: change FastAPI to Spring boot

change FastAPI to Spring boot. Contribute to sglee487/isolia-spring-api development by creating an account on GitHub.

github.com

 

 

여기까지 하며 느꼈었던건 화남과 감격을 동시에 느꼈었는데,

정해준 설정에 아주 조금만 벗어나도 아주 안된다고 아주 개X랄을 해서 검색을 해도 공식문서에 설명은 딱히 없고, 나와 환경이 다른 블로그 글들만 잔뜩있어서 정작 필요한건 뒤지게 안나오고 했었다는 것.

하지만 설정만 잘 갖추어지면, 정말 모든게 다 있다. 테스트도 뭐 따로 복잡한거 없이 설치만 하면 되고, ORM도 다 있고, db도 h2인가 실험용같은데 자동으로 있어서 실행시키면 알아서 생성, 종료되면 삭제도 해주고.

거기다 난 코틀린을 사용하니 못생긴 자바 언어도 안쓴다.

뭐 이런게 다 있나 싶었다.

 

 

다음으론 게시판 기능 만들었었다. 사실 유저, 게시판 2개가 끝이라 다음 게시물이 끝일 예정.