SpringBoot
-
[Kotlin] Kotest, mockkBackend/공부,개념 2023. 9. 3. 17:50
코틀린 스타일 테스트코드 기존에 사용하던 Junit, AssertJ, Mockito를 이용해서도 테스트코드를 작성할 수 있지만, 중괄호를 활용한 코틀린 dsl 스타일을 적용하기 쉽지 않은데 kotest와 mockk(코틀린에서 사용하는 mocking라이브러리)를 이용하면 Mocking이나 assertion 과정에서 Kotlin dsl이나 infix를 사용해 조금 더 코틀린스럽게 테스트코드를 작성할 수 있다. Kotest 코틀린 진영에서 가장 많이 사용되는 테스트 프레임워크 코틀린 DSL을 활용해 테스트코드를 작성할 수 있다. 다양한 테스트 레이아웃(StringSpec, FunSpec, BehaviorSpec 등 ) 제공 Kotlin DSL 스타일의 Assertion 기능 제공 # kotlin dsl이란 D..
-
[Spring Boot] List의 null값 처리하기2 - 일급컬렉션, @RequestBodyBackend/개발 2022. 5. 15. 16:04
컨트롤러에서 List로 된 요청을 받아오는 과정에서, null이나 empty List가 왔을 때 처리하는 방법에 대한 글이다. 이전에 올렸던 [Spring Boot]List의 null 값 처리하기1 - CustomConverter로 @RequestParam 에서 좀 애매한 부분이 있었는데, 다른 해결 방안이 될 수 있을 것 같아서 적어본다. 이전 글은 param, List 이고 이번 글은 body, List 라 조금 다를 수도 있지만 일단 기록용 ㅎㅎ;; 요청으로 받을 DTO를 json파일로 받아와 게임을 등록하는 API가 있었는데, 이 json파일을 리스트로 한번에 받아올 수 있게 하려고 한다. public ResponseEntity saveGameRecords( @RequestBody List rio..
-
[Spring Boot] 카카오 로그인 - 1Backend/개발 2022. 5. 1. 13:20
oauth 로그인을 구현하는 방법 oauth의 기본 로직은 다음과 같다. 출처 : https://datatracker.ietf.org/doc/html/rfc6749 보통 OAuth의 인증 종류(grant type)으로 Autorization Code을 주로 사용한다. Resouce Owner로 부터 리소스 사용 동의를 받으면 Authorization Server는 Client에게 Token을 발급해준다. Client는 Token을 가지고 Resource Server에게 Resource Owner의 정보를 요청한다. Client는 받은 정보를 이용해서 로그인을 진행하거나, 추가적인 회원가입으로 애플리케이션에 필요한 기능을 개발한다 Access Token이 만료되면 웹페이지를 사용하고 있는 Resource ..
-
[Spring Boot] JPA Flush 특징, 문제 해결Backend/개발 2022. 4. 17. 20:16
JPA 특징 중 쓰기지연과 Flush에 관련한 글이다. JPA JPA는 엔티티를 영속성 컨텍스트에서 관리하며, JPA의 모든 데이터 변경은 트랜잭션 안에서 실행된다. tx.begin() tx.commit() tx.rollback() 쓰기지연 쓰기 지연이란 트랜잭션을 커밋하기 직전까지 데이터베이스에 엔티티를 저장하지 않고 내부 쿼리 저장소에 SQL을 모아뒀다가, 트랜잭션을 커밋할 때 모아둔 쿼리를 반영하는 과정이다. 이때 실제로 반영하는 작업을 flush라고 한다. 쓰기 지연의 이점 성능상 이점 (50개의 insert를 50번씩 하는 것보다 한 번에 50개를 다 하는 게 낫다) 데이터베이스 테이블 row에 lock 걸리는 시간 최소화 Flush 플러시 하는 방법 트랜잭션 커밋 시 flush 자동 호출 em..
-
[Spring Boot] List의 null 값 처리하기1 - CustomConverter로 @RequestParamBackend/개발 2022. 4. 7. 17:18
요청이 컨트롤러에게 전해질 때 HandlerAdapter -> ArgumentResolver -> Handler(Controller)로 전해지는데 이때 ArgumentResolver에서 Converter를 사용해서 값을 변경한다. @RequestParam으로 값을 받아올 때 ", "로 구분하면 List로 받아와 지는 것도 StringToCollectionConverter에서 변환이 이뤄지기 때문이다. public ResponseEntity result( @RequestParam(required = false) List searchNames, @RequestParam(required = false) List gameTypes) { // 빈 값 들어올 경우 if (searchNames != null) { s..
-
[Spring boot] 인턴 프로젝트 기록 - 개발 참고사항Backend/개발 2020. 4. 6. 21:43
ManyToMany 관계 tostring 무한으로되는거 방지 => @JsonIgnore 사용 -> 이때는 좀 단순 해결을 위해서 이 방법을 썼는데 이런 어노테이션 외에 Dto를 생성하거나,, 좀 다른 방식으로 해결하는게 좋을 것 같다! 21.08.23 ex) store.java - menu.java store 마다 menu 여러개 갖고있는 상태 // store.java 일부 @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JsonIgnore @JoinTable(name = "store_menu", joinColumns = @JoinColumn(name = "store_id"), inverseJoinColumns = @JoinColumn(n..