Spring

Spring Boot - 프로젝트 기본 설정 세팅(간단한 기능 구현, 테스트 코드 작성)

팅탱팅탱 2024. 3. 9. 04:48

정적인 컨텐츠는 static, 데이터를 동적으로 받아오는 컨텐츠는 templates

 

근데 여기서 

이 html 글자 하나를 수정하고 다시 업데이트하려면 서버를 아예 껐다가 다시 켜야한다(굉장히 소모적임)

그래서 devtools라는 라이브러리를 사용하여서 이런 소모적인 일들을 줄여줄것임.

그 후 build에 해당 html 파일만 리컴파일 시키면 해당 파일이 업데이트가 되는걸 볼 수 있다.

 

h2데이터 베이스를 사용하기에 h2를 깔아주고 폴더의 bin폴더로 들어가서 권한을 주고 h2 터미널에서 데이터 베이스를 실행시킨다

그 후 웹사이트가 하나 실행되는데 그때 앞에있는 주소를 localhost로 변환하여 입력해주면

이렇게 창이 뜨게되는데 이때 처음 서버를 연결할땐 jdbc:h2:~/파일명
이런식으로 처음 연결을 해줘야한다 그래야 파일명으로된 .mv.db폴더가 생기게된다

그 후 첫 연결을 제외한 추후 연결은 

jdbc:h2:tcp://localhost/~/jpashop

이렇게 적어주고 연결을 하면된다

들어가면 이렇게 나오고 여기서 이제 데이터 베이스를 만들면된다.

정적인 컨텐츠는 static, 데이터를 동적으로 받아오는 컨텐츠는 templates

 

근데 여기서 

이 html 글자 하나를 수정하고 다시 업데이트하려면 서버를 아예 껐다가 다시 켜야한다(굉장히 소모적임)

그래서 devtools라는 라이브러리를 사용하여서 이런 소모적인 일들을 줄여줄것임.

그 후 build에 해당 html 파일만 리컴파일 시키면 해당 파일이 업데이트가 되는걸 볼 수 있다.

 

h2데이터 베이스를 사용하기에 h2를 깔아주고 폴더의 bin폴더로 들어가서 권한을 주고 h2 터미널에서 데이터 베이스를 실행시킨다

그 후 웹사이트가 하나 실행되는데 그때 앞에있는 주소를 localhost로 변환하여 입력해주면

이렇게 창이 뜨게되는데 이때 처음 서버를 연결할땐 jdbc:h2:~/파일명
이런식으로 처음 연결을 해줘야한다 그래야 파일명으로된 .mv.db폴더가 생기게된다

그 후 첫 연결을 제외한 추후 연결은 

jdbc:h2:tcp://localhost/~/jpashop

이렇게 적어주고 연결을 하면된다

들어가면 이렇게 나오고 여기서 이제 데이터 베이스를 만들면된다.

어플리케이션 프로퍼티스파일을 지우고 yml파일로 새로 만든후 이렇게 데이터베이스 관련 옵션을 적어준다.

근데 여기서 h2 데이터 베이스에 접근할때 저 MVCC라는 설정이 들어가있는 주소로 들어가면되는데

최신버전에서는 저 부분 옵션이 빠져서 그냥 저걸 제외한 url로 연결 하면됨.

 

@@주의할점

yml파일 작성할때 jpa 부분 줄바꿈안해서 에러남...이유 못찾아서 2시간 버림....

 

기본적인 클래스 생성 후 테스트 코드 작성

기본 세팅은 해줬으니 이제 간단한 기능을 만들어서 테스트 코드를 작성하여 검증해볼것이다.

우선 Member 클래스를 만들어준다.

아까 lombok을 설정해줬기에 getter setter의 코드를 에노테이션으로 확 줄일 수 있다.

 

그 후 기능들을 정의해줄 Member repository 클래스를 만들어준다

여기선 멤버 저장 및 조회를 만들었고 저장시에는 멤버의 id 값을 반환해주고 멤버 조회시에는 id값을 파라미터로 받아서 jpa에서 멤버의 id로 멤버를 찾아서 반환해준다.

 

테스트 코드 작성

 

 

테스트코드를 이런식으로 작성해주었다.

테스트 코드 작성시에 junit으로 작성해주게되는데 여기서 4버전에는 RunWith 에노테이션으로 따로 Spring.runner.class를 해주어야하는데 나는 junit5버전으로 하여서 그부분은 생략하였다.

우선 멤버 객체를 만들어주고 유저이름을 설정해준다.

그 후 멤버 객체를 아까 구현한 멤버 레포지토리의 save기능을 이용하여서 저장해주고 id값을 받아온다(아까 save기능 구현시에 id값을 반환하게 만듬)

그 후 findMember라는 객체에 반환한 id값을 넣어서 find기능으로 멤버를 찾아준다.

그렇다면 이제 저장된 유저와 찾은 유저가 동일한지 판단해야하는데 이건 Assertions.assertEquals(기대값, 실제값)을 통하여 검증해주었다.

저장한 멤버객체와 찾은 멤버객체 각각 id를 추출하는 getId 메서드를 사용하여 id를 검증해주고 마찬가지로 getUsername메서드를 통해 이름 또한 검증해주었다.

 

쿼리 파라미터 로그

쿼리 파라미터 로그를 찍어주기 위해선 이 trace 옵션을 설정해줘야한다 그 후 테스트 케이스를 돌려보면

잘 나오는걸 확인할수있고 다른 라이브러리를 사용하여서 봐도된다

나는 p6spy를 사용하여서 해보겠다.

이렇게 스프링 버전에 맞는 걸 깔아주고 bulid.gradle을 리프레시 시켜준다.

그 후 돌려보면

이렇게 들어가진 데이터가 잘 나오는걸 확인할수있다

하지만 운영 및 배포과정에서는 성능 테스트를 해보고 적용하여야한다.

성능 저하의 원인이 될 수 있기에 성능 테스트 후 > 이정도면 받아들일만하다라고 판단하면 적용.