코틀린으로 만들어진 스프링부트 프로젝트에서 jacoco를 추가하는 방법을 알아보자. 1. JaCoCo란?JaCoCo(Java Code Coverage)는 자바 프로그램의 코드 커버리지를 측정하기 위한 오픈 소스 도구이다. 코드 커버리지는 테스트가 코드의 몇 퍼센트를 실행하는지를 측정하는 지표이다. JaCoco로 다음과 같은 작업을 수행할 수 있다. 코드 커버리지 분석JaCoCo는 어떤 코드가 테스트되었는지, 어떤 코드가 테스트되지 않았는지를 보여준다. 이를 통해 테스트가 부족한 부분을 찾아낼 수 있다. 리포트 생성JaCoCo는 HTML, XML, CSV 등 다양한 형식의 리포트를 생성하여 커버리지 결과를 시각적으로 제공한다. CI/CD 통합JaCoCo는 Jenkins, GitLab CI/CD 등 다양..
SpringBoot로 개발한 API를 React에서 호출하려면 CORS 설정을 해줘야 한다. (React, SpringBoot 모두 설정해주어야 하는 것으로 알고있다.) 프론트 개발자분이 이거 CORS 오류가 떠요! 하면 어떻게 해결할 수 있는지 알아보자. 🤔 1. CORS란? 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 웹 보안의 핵심 개념 중 하나로, 다른 출처의 리소스에 대한 접근을 허용하는 메커니즘이다. "출처"는 프로토콜, 도메인(또는 IP 주소), 그리고 포트 번호의 조합으로 정의된다. 예를 들어, https://example.com은 https://another.com 또는 http://example.com:8080 (프로토콜, 도메인, 포트 중..
프로젝트를 진행하며, 이때까지 jar 파일을 로컬에서 빌드하고 scp를 이용하여 jar 파일을 배포 서버에 올리고 nohup java -jar jar파일명.jar & 명령어로 배포를 진행하였다. 하지만.. 이렇게 해서는 안된다는 것을 알고 있었기에, 이번에는 CI/CD 까지는 아니더라도 (지식이 부족해서...........) 다음과 같은 목표를 가지게 되었다. 우분투에 깃 원격저장소를 연결하고 pull 받은 후 script를 사용하여 기존에 돌아가던 jar 파일을 멈추고 pull 받은 상태의 프로젝트를 새로 빌드 후 실행시키는 것! 크게 깃 설치 및 레포 연결, 쉘 스크립트 부분으로 나눌 수 있다. 01. Ubuntu에 Git 설치 1. 깃 설치 sudo apt install git 2. 레포를 저장할 ..
지난 글에 이어서 이번에는 엔티티를 Dto로 변환하여 응답을 내려주는 것을 할 것이다. 01. 코드 작성 다음과 ordersV2 를 작성한다. @GetMapping("/api/v2/simple-orders") public List ordersV2() { List orders = orderRepository.findAllByString(new OrderSearch()); List result = orders.stream() .map(o -> new SimpleOrderDto(o)) // order를 dto로 변환함 .collect(Collectors.toList()); return result; } @Data static class SimpleOrderDto { private Long orderId; pr..
API 개발 고급 에서는 주문 + 배송정보 + 회원을 조회하는 API를 만들 것이다. 지연 로딩 때문에 발생하는 성능 문제를 해결하는 것이 목표이다. Order - Member 는 ManyToOne, Order - Delivery 는 OneToOne 이다. 여기에서는 @XToOne에 대한 성능 최적화를 위한 과정을 진행한다. Order - OrderItem은 OneToMany이며 Collection 형태로, 나중에 진행한다. 00. 컨트롤러 작성 요청을 받아 처리할 컨트롤러를 작성하자. @RestController로 Json 형태로 객체 데이터를 반환함을 명시한다. @RequiredArgsConstructor 로 final 필드인 orderRepository를 주입받는다. @RestController @..
이 글은 https://spring.io/guides/gs/rest-service/ 를 따라하며 스프링으로 RESTful 웹 서비스를 만드는 과정을 보여줄 것이다. 01. 우리가 만들 것은? http://localhost:8080/greeting 에서 HTTP GET 요청을 받는 서비스를 만들 것이다. 이 요청에 대해 JSON 형식으로 다음과 같은 응답을 반환할 것이다. { "id" : 1, "content" : "Hello, World!" } 아래와 같이 쿼리 스트링에 있는 선택적 파라미터인 name으로 커스터마이징 할 수 있다. http://localhost:8080/greeting?name=User name 의 값은 기본값인 World를 오버라이딩하고, 아래와 같이 응답에 반영된다. { "id" :..
01. 스프링 부트란? Spring Boot를 사용하면 "그저 실행하기만 하면 되는" 독립적 실행형 프로덕셩 등급의 Spring 기반 애플리케이션을 쉽게 생성할 수 있다. Spring Boot 애플리케이션에는 최소한의 Spring 구성만 필요하다. Spring Boot는 java -jar 로 실행하는 Java 애플리케이션을 만들 수 있다. 02. 스프링 부트의 주요 목표 Spring 개발에 대해 빠르고, 광범위하게 적용할 수 있는 환경을 만든다. 기본값 설정이 있지만 설정을 바꿀 수 있다. 대규모 프로젝트에 보안, 모니터링과 같은 공통적인 비기능을 제공한다. XML 구성 요구사항이 전혀 없다. 03. 스프링 부트의 특징 애플리케이션 개발에 필수적인 요소들만 모아놓았다. 간단한 설정으로 개발 및 커스텀이 ..