java30 [Kotlin] REST Assured로 통합 테스트 작성하기 개요Java 프로젝트에서 자주 사용하던 REST Assured(https://rest-assured.io/)를 사용하여 Kotlin 프로젝트에서요 실제 API를 호출하는 Integraion Test를 작성한다 Java REST Assured 참고 : https://blog.igooo.org/119 Why Kotlin?Java Java로 Junit 테스트를 작성하는 경우 여러 줄의 검증 코드가 있을 때 특정줄의 검증 코드에서 오류가 발생하면 아래 검증 코드는 실행되지 않고 사용자에게 오류 라인수를 리포팅해 준다.......then(). statusCode(200). body("size", is(3)). body("name.any { it == 'Ervin Howell' }", is(tru.. 2024. 9. 25. [Spring] @Async와 Virtual Thread 개요Java 21에 Virtual Thread와 Spring @Async 어노테이션을 조합하여 비동기 프로그래밍 방법을 알아본다. Spring @Async@Async 어노테이션을 Spring의 AOP를 사용하여 비동기 메서드 실행을 제공한다.@Async는 기본적으로 AOP로 실행되며 Proxy Parttern의 한계점을 가진다.public 메서드로만 사용가능self-invocation 불가메서드 리턴 타입은 void로 설정하거나, Future / ListenableFuture / CompletableFuture로 설정하여 비동기 처리를 할 수 있다.void 리턴 타압의 경우 Exception 처리를 위하여 AsyncUncaughtExceptionHandler를 사용하여 처리할 수 있다. 프로젝트 구조HT.. 2024. 9. 14. nGrinder on K8S 개요nGrinder를 다시 설치해야 하는 일이 생겨서 찾아보다가 K8S에 설치하여 사용할 수 없는지 찾아보다가 Docker HUB에 이미지가 업로드되어 있는 것을 보고 K8S에 설치하여 사용했다. InstallDocker Imagedocker hub에 공식 이미지가 있어서 바로 설치하여 사용가능하다.https://hub.docker.com/r/ngrinder/controllerK8SK8S에서 위 Docker 이미지를 구동을 위해서는 Deployment 파일을 작성하여 Controller와 Agent 인스턴스 실행이 필요한데 이것도 이미 작성해 주신 분이 있다. 참고 : https://github.com/KesavanKing/ngrinder-k8sDeployment 파일들은 받아서 resource: {} .. 2024. 7. 25. Java - ReentrantLock 개요There are two scenarios in which a virtual thread cannot be unmounted during blocking operations because it is pinned to its carrier:When it executes code inside a synchronized block or method, orWhen it executes a native method or a foreign function.Pinning does not make an application incorrect, but it might hinder its scalability. If a virtual thread performs a blocking operation such as I/.. 2024. 7. 19. [Spring] Springdoc-openapi 사용하여 API 문서 만들기 개요springdoc-openapi는 Spring Boot 프로젝트의 API 스팩에 대하여 자동으로 문서 생성을 해주는 라이브러리다. json, yaml, html 등 다양한 형식의 문서를 생성한다. OpenAPI 3 스팩을 지원한다. Getting Started간단한 Spring MVC Controller를 생성한다.@RestController@RequestMapping("/v1.0/pets")class PetApiController { private List> pets = List.of(Map.of("name", "pet1"), Map.of("name", "pet2")); @GetMapping List> findAll() { return this.pets; } @GetMapping("/{name}".. 2024. 7. 16. Generational ZGC in Java 21 개요Java 21은 2023 년 9월에 Generational ZGC의 도입과 함께 공개되었다. Highly scalable, low-latency GC 였던 ZGC는 https://openjdk.org/jeps/439를 통해 generational GC로 업데이트 되었다. 이 업데이트에서는 young / old 객체에 대하여 별도의 세대를 도입하여 메모리 관리를 최적화 하는것에 중점을 두었다. What is ZGC?ZGC는 최대 16TB 크기의 힙을 지원하면서도 밀리초 미만의 일시 정지 시간을 유지하며 높은 확장성을 갖도록 설계되었다. ZGC는 애플리케이션이 실행되는 동안 새로운 객체를 할당하고, 도달할 수 없는 객체를(unreachable object) 스캔하고, 힙을 압축하는 등의 작업을 수행하는데.. 2024. 7. 2. 이전 1 2 3 4 5 다음