우아한테크코스 3기 백엔드 Lv2 [체스 미션] 학습로그

김태희·2021년 6월 21일
0
post-thumbnail

[Spring] DI(의존성 주입) 적용 - 4

내용

  • 기존 코드는 객체들이 서로 강하게 결합되어 있었다.
  • Spring Bean 생성자 주입 방식으로, 객체들 간의 결합도를 낮췄다.

태그

Spring, DI, OOP


[Spring] Web MVC 적용 - 3

내용

  • Spark Java를 제거하고, Spring Web MVC를 적용했다.
  • 추상화가 잘 되어있어 Controller의 코드가 매우 간결하고 깔끔해졌다.

태그

Spring, MVC


[JDBC] JdbcTemplate 적용 - 4

내용

  • Mysql Jdbc Driver 만 사용해서 작성했던 DAO 클래스들에 JdbcTemplate 를 적용했다.
  • 한 단계 더 추상화 되어있어, 코드가 많이 줄어들고 깔끔해졌다.
  • queryForObject() 로 DB에서 값을 조회할 때, 결괏값의 개수가 0개이면 EmptyResultDataAccessException 가 발생해, try ~ catch 문으로 직접 예외를 처리해야 하는 부분이 아쉬웠다.

태그

JDBC


[OOP] 도메인 분리 - 5

내용

  • 기존 코드는 도메인Spring과 관련된 Repository 들이 모두 얽혀있었다.
  • 모든 도메인이 Spring에 의존하고 있었다.
  • 테스트도 @SpringBootTest 를 사용해 Spring 자체를 실행시켜야 가능했다.
  • 코드 리뷰어 김고래 의 피드백을 적용하면서, 도메인은 순수 자바 객체로 유지되어야 함을 깨달았다.
  • 불가피하게 Spring을 띄워야 하는 Repository 관련 테스트를 제외하고, 도메인 관련 테스트들은 모두 순수 자바로만 실행할 수 있게 되었다. 테스트 실행 속도가 매우 빨라졌다.
  • 도메인 자체만 테스트하다보니, 각 객체별로 작은 단위의 테스트를 매우 간단하게 할 수 있었다. 이전에는 모든 의존성을 알맞게 주입해 놓아야 테스트가 가능했다.
  • 콘솔 게임은 Spring 없이 순수하게 자바로만 실행할 수 있게 되었다.

태그

OOP, Domain, Test, Spring


[Test] In-Memory DB 적용 - 3

내용

  • 이전에는 테스트를 실제 DB를 통해서 했었다.
  • 코드 리뷰어 김고래 의 피드백으로 Test들은 In-Memory DB인 H2 DB를 사용하게 했다.
  • 테스트가 훨씬 가벼워지고, 외부 DB에 의존하지 않게 되었다. 또한, 속도도 빨라졌다.

태그

Test, DB


[Spring MVC] @(Rest)ControllerAdvice - 3

내용

  • Controller와 Exception의 범위를 지정하면, Exception을 알아서 잡아준다.
  • try ~ catch 문을 없앨 수 있어, 비즈니스 로직이 매우 깔끔해진다.

태그

Spring, MVC, Exception


[HTTP] REST API - 2

내용

  • 삭제 요청을 POST "/delete" 로 했었다.
  • DELETE "games/${gameId}" 로 바꾸니, API가 더욱 명시적으로 되었다.

태그

HTTP, REST, API


내용

  • 클라이언트에 값을 저장하고, 이후 요청마다 해당 값을 포함시키는데 적합한 쿠키를 사용했다.
  • 한 번 쿠키를 발급해주면, 만료되기 전 까지 매 요청에 쿠키를 포함해 보내기 때문에 인증에 유용하다.

태그

HTTP, Cookie


[보안] Hash 암호화 - 4

내용

  • 프로그래밍 요구사항에서 비밀번호를 클라이언트에 저장하고, 매 요청에 같이 보내라는 부분이 있었다.
  • 이 방식은 보안에 매우 취약하기 때문에, Hash 암호화를 사용했다.
  • 쿠키나 요청 데이터가 탈취당하더라도 Hash 함수로 암호화 되어있기 때문에, 암호 본문은 알 수 없어 보안에 유리하다.

태그

보안, Hash


profile
Web Back-End (Spring, JPA, AWS)

0개의 댓글