본문 바로가기
반응형

Spring9

WireMock을 사용한 openFeign 테스트하기 1. 문제 상황 정의하기 진행 중인 프로젝트에서 다른 모듈의 API를 불러와야 한다. 매번 restTemplate을 사용했는데 곧 deprecated 된다길래... openFeign을 사용해보았다. 작성한 코드를 바탕으로 WireMock을 사용하여 openfeign 통합 테스트를 해볼 것이다. 2. OpenFeign을 사용한 client 현재 프로젝트에서 다른 모듈의 API 호출하기 위해 사용하는 openFeign 관련 로직이다. @FeignClient(name = "processing", url = "${feign.test-api.url}") public interface ProcessingFeignClient { @PostMapping("/api/confirm/test") ResultDto proce.. 2023. 5. 14.
Spring boot 실행 후 ‘process finished with exit code 1’와 함께 종료될 때 1. 문제 상황 정의하기 spring boot 프로젝트를 실행할 때 아무런 에러를 내뱉지 않고 프로젝트가 꺼지면 당황스럽다. 아래 사진을 보면 프로젝트 실행과 동시에 ‘process finished with exit code 1’과 함께 종료된다. 2. 해결하기 2-1. Main method에서 error 잡기 main 문에서 다음과 같이 try-catch를 사용해서 에러를 출력해보면 프로젝트에 무슨 문제가 있는지 알 수 있다. 2-2.Port 검색 후 종료 Mac에서는 lsof를 통해 해당 포트로 떠있는 프로세스를 검색할 수 있다. 출력된 에러의 내용처럼 이미 8080 포트가 작동 중이었고 그 포트를 제거해주면 된다 2022. 8. 24.
@Transactional 동작 원리 JDBC Transaction의 이해 Connection connection = dataSource.getConnection(); try (connection) { connection.setAutoCommit(false); // excute some SQL statements... connection.commit(); } catch(SQLException e) { connection.rollback(); } 데이터베이스를 연결합니다. setAutoCommit의 default value는 true이다. 이것을 setAutoCommit을 false로 지정한다. true로 설정하게 되면 하나의 쿼리마다 자동시작 ~ 자동커밋이 일어난다. 우리는 여러 개의 쿼리 문장이 하나의 작업으로 수행되게 할 것이기 때문에 .. 2021. 7. 30.
Transaction/@Transactional 이해하기 Transaction에 대해 누군가 물어보면 "데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위" 라고 기계처럼 설명했다. 이 기계적인 답변에서 벗어나기 위해 transaction에 대해 공부해보겠다. 1. Transaction 맛보기 옷을 구매한 후, 판매자에 3만원을 계좌이체를 해야 한다고 생각해보자. 우리는 ATM기에 가서 판매자에게 돈을 송금할 것이다. 나의 계좌에서 3만원이 출금된다. UPDATE account SET balance = balance - 30000 WHERE user="park"; 판매자의 계좌에 3만원이 입금된다. UPDATE account SET balance = balance + 30000 WHERE user="판매자"; 이러한 상황에 어떠한 .. 2021. 7. 17.
AOP 이해하기 @Transactional에 대한 질문을 받았다. 하지만 대답하지 못했다. 이것을 제대로 알기 위해서는 AOP를 알아야 대답을 할 수 있다는 것을 느꼈고 AOP에 대해 생각을 해보았으나, 정확한 대답을 하지 못했다. 즉, 잘 모른다는 것이다. 그래서 이번 기회에 제대로 정리해보고 트랜잭션까지 공부해봐야겠다. 1. AOP 개념 Asptect-oriented Programming(AOP)은 OOP를 보완하는 수단으로 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법이다. (OOP를 더 잘할 수 있게 도와준다.) 동일한 색깔은 동일한 concern이라고 생각하면 된다. Concern이란 여러 클래스, 메소드에 거쳐 나타나는 비슷한 코드들이다. ex) transaction, logging 각 concer.. 2021. 7. 14.
Spring Boot로 CORS 해결하기 "CORS" 오늘 개발하면서 처음 들은 단어이다. 서로 다른 도메인에서 접근하게 되면 위와 같은 에러가 뜬다. 캡스톤 프로젝트를 진행하면서 프론트 개발하는 분이 CORS를 해결해야 한다고 해서 이게 뭔가 싶어서 찾아봤다. CORS를 이해하기 전에 SOP에 대해서 먼저 알아보자. SOP이란? Same-origin policy의 줄임말로 같은 Origin에만 요청을 보낼 수 있게 제한하는 보안 정책을 말한다. Orgin의 구성은 다음과 같다. URL Schema (Ex. http, https) Hostname (Ex. localhost, google.com) Port (EX. 80, 8080) 이 중 하나라도 다르면 SOP 정책에 위반되어 AJAX 요청이 불가하다. CORS이란? Cross-Origin Re.. 2021. 4. 5.
반응형