java 50

[Junit] @ParameterizedTest 객체에 값을 자동으로 넣어주는 Auto Param - @autosource

지인이 테스트 코드를 짤 떄, 파라미터의 값을 자동으로 세팅해주는 요상한게 생겼다고 해서 사용을 해보았습니다. 강남언니 CTO 이규원님이 만든 오픈소스라고 하더군요 AutoParams는 AutoFixture에서 영감을 받은 Java의 매개변수화된 테스트를 위한 임의 테스트 데이터 생성기입니다. Auto Param 이 제공하는 기능은, 매개변수에 값을 자동으로 주입해줍니다. 리터럴 변수, Enum, Object, Generic, Collection, Primitive Type Stream 까지 지원을 해줍니다.. (굉장해) @AutoSource 사용해보기 @ParameterizedTest 와 @AutoSource 어노테이션을 사용이용해서 간편하게 사용할 수 있습니다. Auto Param을 사용하기 위해서는..

[Spring] WebClient 사용방법 가이드

아래의 글 순서대로 읽으시면 해당 글을 이해하시는데 족흠 도움이 됩니다 🙏 ⚙️ Block, Non-Block, sync(동기), Async(비동기) 의 간단한 개념 [Spring] Webclient 란❓ (RestTemplate vs WebClient) [Spring] WebClient 사용방법 가이드 (now) [spring] WebFlux란 + Reactor 객체란 (Mono 와 Flux) 저번 포스팅에 이어서 WebClient 사용방법에 대해 공부해보겠습니다. 📌 Spring WebClient 사용하기 공식문서에 나온내용을 토대로 해석해놓은 블로그글이 굉장히 많기 때문에 공식문서를 하나씩 보기보다는, 간단한 사용방법과 제가 어려웠던 부분을 토대로 정리를 해보겠습니다. 1) WebClient 종속성..

Spring/Spring Boot 2022.11.23

🚀 Spring Request DTO 추상클래스로 받아오기 (까지의 트러블 슈팅..😂)

이번 포스팅은 스프링에서 Client 에서 받는 Json 데이터를, 조건에 따라 다른 유효성 검사를 하기위한 과정에서의 트러블 슈팅 기록입니다.. ➡️ 상황 사내에서, 쿠폰 정책에 따라 각각의 쿠폰을 등록할 떄, 필요한 조건이 달라졌기 때문에 기존의 단일 유효성 검사에서, 어떤 쿠폰이냐에 따라서 Custom 한 Validation 을 적용해야하는 상황이였습니다. [문제 직면부터 시도과정] @RequestBody 로 받아오는 DTO 클래스 생성자에 throw Exception ➡️ 내가 던진 Exception 이 아닌 예상치 못한 `Json Parse Error : HttpMessgeException` 이 던져지고, `ClassCastException`이 터짐.. 문제 해결 후, 확장성을 고려하여 DTO ..

Spring/Spring Boot 2022.11.17

[Junit] Test Fixture 란 ❓

Test Fixture 의 이해를 위한 글입니다. Test Fixtures 개념을 실제로 사용하는 2가지 방법을 다룹니다. 코드는 ⚙️ Github 에 있습니당!! Test Fixture 란 일종의 개념이라고 생각합니다. 중복 발생되는 무언가(행위)를 고정시켜 한곳에 관리하도록 하겠다는 개념. Test Fixture 를 사용 예시 금액과 나라를 가지고있는 Money 객체가 있다고 해봅니다. @Getter @AllArgsConstructor @EqualsAndHashCode public class Money { private int money; private String country; /** 돈 더하기 **/ public Money add(Money anotherMoney) { checkOrigin(an..

[Spring DB 1편] (3) 트랜잭션의 이해

인프런 김영한 - 스프링 DB 1 강의를 듣고 정리한 글 입니다. 목차 1. 트랜잭션이란 트랜잭션(Transaction)을 이름 그대로 번역하면 거래라는 뜻입니다. 이것을 풀어 이야기하면, 데이터베이스에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 것을 뜻합니다. 모든 작업이 성공해서 데이터베이스에 정상 반영하는 것을 커밋(Commit)이라 하며, 작업 중 하나라도 실패해서 거래 이전으로 되돌리는 것을 롤백(Rollback)이라고 합니다. 2. 트랜잭션 특징 (ACID) 트랜잭션은 ACID라 하는 4가지 특징을 보장해야합니다. 원자성 (Actomicity) : 트랜잭션 내에서 실행한 작업들은 마치 하나으 ㅣ작업인 것처럼 모두 성공하거나 모두 실패해야한다. 일관성 (Consistency) : ..

[Spring & Java] 🚀 재고시스템으로 알아보는 동시성이슈 해결방법

인프런 "재고시스템으로 알아보는 동시성 이슈 해결방법" 강의를 보고 정리한 글입니다. 📗 Spring & Java, Mysql, Redis 를 이용합니다 재고시스템을 활용해서, 멀티스레드 혹은 분산환경에서 가변데이터에 접근하는 동시성 문제를 해결하는 내용이 강의에 담겼습니다. 동시성 문제란, 동일한 하나의 데이터에 2 이상의 스레드, 혹은 세션에서 가변 데이터를 동시에 제어할 때 나타는 문제로, 하나의 세션이 데이터를 수정 중일때, 다른 세션에서 수정 전의 데이터를 조회해 로직을 처리함으로써 데이터의 정합성이 깨지는 문제를 말합니다. 📌 강의를 듣고 느낀 점은, 동시성 문제의 근본적인 해결 방법은 가변데이터에 순차적으로 접근할 수 있는 방법을 구상하는 것 이라고 생각했습니다 데이터베이스를 이용한 락 프레..

[JUnit] JAVA 매개변수 Test - @ParameterizedTest

🚀 오늘은 다양한 매개변수 케이스를 하나의 테스트 메소드에서 주입시켜주는 @ParameterizedTest 어노테이션의 다양한 케이스들의 가이드를 기록해보고자 합니다...!! [목차] @Parameterized란 @Parameterized 가이드 @Parameterized 공급자 종류 @Parameterized란 @ParameterizedTest 어노테이션은 Junit 에서 다양한 매개변수들에 대한 경우를 테스트할 수 있도록 제공해주는 어노테이션입니다. @ParameterizedTest 주석이 달린 메소드는 매개변수화된 테스트 메소드임을 의미하고 Private, Static 이 아니어야 합니다. @Parameterized 시작 가이드 의존성 추가 먼저 JUnit Jupiter Params 의존성을 추가해..

[JAVA] 지역변수 vs 전역변수 (feat. java8 JVM Static Object Heap Area)

자바 지역변수 vs 전역변수 .. 이 글을 읽고있는 당신의 선택은!?!? 📗 고민의 시작은 이러했습니다. 단 하나의 메소드에서만 사용되는 지역변수를 전역변수로 뺀다면 메모리 낭비가 이루어지지않을까 ?? ➡️ 전역변수로 지정해줄때의 장점은 뭐지? 어떤상황에서 전역변수가 더 유용하게 사용되는거지?? 📝 요약 더보기 java 8 이후 static object 는 jvm 힙 메모리 영역에서 관리된다. 고로 garbage collector 의 영향을 받느다. 지역변수 vs 전역변수의 선택은 사용성에 집중하자. 메모리를 아끼기위해 지역변수로 선언했지만, 해당 메소드에 많은 생성과 파괴가 일어나면 io 자원을 많이 잡아먹게된다. 이런 상황에서 전역변수는 유용하다. 잘생각해보자! 자바 8 이후 static object..

Java/Java 문법 2022.09.26

[모던자바인액션] chapter7. 자바 병렬 처리 와 성능측정 - parallelStream

" Modern Java In Action - 모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드 " 독서 스터디 후, 책 내용을 정리한 글입니다. 1) Chapter 1. 자바 8, 9, 10, 11 : 무슨일이 일어나고 있는가? 2) Chapter 2. 동작 파라미터화 코드 전달하기 3) Chapter 3. 람다 표현식 4) Chapter 4. Stream 5) Chapter 5. Stream 활용 6) Chapter 6. Stream으로 데이터 수집하기 7) Chapter 7. Stream 병렬 데이터처리와 성능 Chapter7 에서는, 자바 병렬 스트림의 사용과 성능에 대해서 이야기합니다. 자바 7이 등장하기 전에는 자바에서 병렬처리를 할려면 많은 노력을 해야했습니다. 데이터를 ..

[모던자바인액션] chapter6. Stream Collect 메소드 최종연산에 대하여 - collector, collectors

" Modern Java In Action - 모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드 " 독서 스터디 후, 책 내용을 정리한 글입니다. 1) Chapter 1. 자바 8, 9, 10, 11 : 무슨일이 일어나고 있는가? 2) Chapter 2. 동작 파라미터화 코드 전달하기 3) Chapter 3. 람다 표현식 4) Chapter 4. Stream 5) Chapter 5. Stream 활용 6) Chapter 6. Stream으로 데이터 수집하기 7) Chapter 7. Stream 병렬 데이터처리와 성능 Chapter6 에서는, 스트림 최종연산인 collect 사용방법에 대해서 이야기합니다. [목차] 컬렉터란 컬렉터 인터페이스 (Stream Collector Interfa..

반응형