개발자 키우기

스프링부트 복습 본문

Back-end/Springboot

스프링부트 복습

개발자 키우기 2023. 4. 24. 21:31

1. 패키지 이름

 

스프링부트 프로젝트를 만들때의 패키지 주소( com.naver.www )를 만들었다면 src/main/java 폴더에 새로운 패키지를 만들때 com.naver.www.@로 만들어야한다 그 이유는 스프링의 IoC ( 제어의 역전 / 싱글톤 패턴 + 레퍼런스 변수 스프링이 관리 ) 로 인하여 컴포넌트 스캔을 할때 com.naver.www.@는 인식하지만 com.naver.test 라고하면 인식하지 못함

- 참고자료 유튜브 메타코딩 - 스프링부트 강좌 4강(블로그 프로젝트) - 프로젝트 실행해보기 -

 

2. stateless

 

HTTP로 통신할때 사용하며 연결을 유지하는게 아니기 때문에 상대를 세션으로 인식함으로써 클라이언트를

인식하지만 이와 관련된 보안 문제를 해결해야함

- 참고자료 유튜브 스프링부트 강좌 11강(블로그 프로젝트) - stateless란 -

 

3. 데이터베이스 고립 수준

 

Mysql의 고립 수준은 기본값으로 Repeatable Read이다 Repeatable Read는 Read Committed보다 높지만 성능에 크게 차이가 없기도 하다. 일관성 해결을 위해서 crud에서 read 할때도 트랜잭션을 걸어서

일관성에 문제가 없도록 해야한다. 이때 트랜잭션이 시작할때의 참조하는 undo 번호를 기억했다가 undo 번호가 바뀌어도 시작할때 기억한 undo번호를 참조하여 일관성이 유지되게 한다

- 참고자료 유튜브 스프링부트 강좌 43강(블로그 프로젝트) - REPEACTABLE READ

 

4. assertThat 사용하기

 

여태까지 내가 사용한 방법은 assertEquals 였다. 마우스를 가져다 놓으면 첫번째 값은 예상하는값과 두번째 값은 실제값을 넣는 방식이었다. 

 

Assertions.assertEquals(result, member1);

 

이번에 알게된 것은 assertThat이다. 마찬가지로 예상하는값과 실제값을 넣는것이지만 assertEquals 보다 직관적이다.

 

assertThat(result.size()).isEqualTo(2);

 

또한 import를 하여 앞에 Assertions를 붙이이지 않고 사용할수 있다는 점도 새롭게 알게 되었다.

 

import static org.assertj.core.api.Assertions.assertThat;