Spring(20)
-
WebClient
스프링 WebClient는 비동기적인 HTTP 요청을 처리하는 클라이언트 라이브러리입니다. 다음은 WebClient를 사용하는 기본적인 방법입니다: 1. WebClient 의존성 추가: 프로젝트의 Maven 또는 Gradle 파일에 WebClient 의존성을 추가해야 합니다. implementation 'org.springframework.boot:spring-boot-starter-webflux' 2.WebClient 생성: WebClient를 생성하기 위해 WebClient.Builder를 사용합니다. WebClient webClient = WebClient.builder().baseUrl("http://api.example.com").build(); baseUrl() 메서드를 사용하여 기본 URL을..
2023.05.22 -
RestTemplate
RestTemplate은 스프링 프레임워크에서 제공하는 HTTP 클라이언트 라이브러리입니다. RestTemplate을 사용하여 서버와의 HTTP 통신을 쉽게 처리할 수 있습니다. 주요 기능은 다음과 같습니다: HTTP 메서드 지원: RestTemplate은 GET, POST, PUT, DELETE 등 다양한 HTTP 메서드를 지원합니다. 각 메서드는 서버로 요청을 보내고 응답을 받는 데 사용됩니다. 요청과 응답 처리: RestTemplate은 요청과 응답을 처리하기 위한 다양한 메서드를 제공합니다. 예를 들어, getForObject() 메서드를 사용하여 GET 요청을 보내고 JSON 형식의 응답을 객체로 변환할 수 있습니다. URL 변수와 쿼리 매개변수: RestTemplate은 URL에서 변수를 설정..
2023.05.22 -
MyBatis(SqlSession) - 프로시저 실행시 -1을 리턴하는 이유는?
오늘 업무를 보면서 이상한 현상을 발견하였다. 분명 Transaction은 잘 일어나는데 MyBatis의 SqlSession에서는 -1을 리턴받고 있는것이다. DB도 잘 저장되고, 서비스 진행에도 문제가 없는데 왜 -1을 리턴하는것일까? SqlSession은 대개 영향을 받은 행의 개수를 리턴한다고 한다. 그래서 팀원들 모두 -1을 리턴하는것은 오류라고 알고었고, 그게 맞다. 원인은 프로시저였다. 직접적으로 Update문을 작동시키는게 아니라 프로시저를 통해 Update를 작동시키기 때문에 프로시저의 실질적인 리턴은 영향을 받은 행의 개수가 아닌 NULL인것이다. MyBatis는 NULL을 받기때문에 오류로 인지하고 -1을 리턴하는것이었다. 이러한 문제를 해결하기위해서 프로시저에 리턴값을 입력해주고 실행..
2023.02.23 -
OCP(Open-Close Principle)이란?
기존의 코드를 변형하지 않으면서 기능을 추가할 수 있도록 설계가 되어야한다. 오늘 Spring프로젝트의 개발을 끝마치고, 다듬는 과정을 거치면서 하나의 문제에 직면하게 되었다. 오늘 주제와 연관된 내용인데, 최초 이 프로젝트를 작성한 분(업체)가 Popup에 관련된 모든 함수의 끝을 return; 으로 마무리지어버렸다. 이게 왜 문제가 되느냐 switch-case if문으로 뒤덥힌 코드 사이에서 우리가 예외를 처리해야할 부분을 발견했고, 그 부분을 트리거 삼아 새로운 로직을 작성하려해도 switch-case에서 처리한 부분만 작동되지 return; 때문에 모두 undefined을 리턴하게 되었다. 최대한 switch-case문이 포함된 파일(공통 사용파일)을 건들지 않고 분기처리를 해보려 수많은 대체 트..
2023.02.20 -
Service와 ServiceImpl을 따로 두는 이유는 뭘까?
회사에서 Spring프로젝트를 진행하면서 기존의 개발자들이 Interface의 형태로 Service와 ServiceImpl, Dao와 DaoMapper이렇게 나누어 놓는것을 흔하게 볼 수 있었다. 습관적으로 나누고, 기존의 프로젝트들이 그래왔으니까 그러려니~ 넘어갈 수도 있지만, 문득 궁금해졌다. 그래서 https://jeonyoungho.github.io/posts/spring%EC%97%90%EC%84%9C-Service-ServiceImpl%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%B4%EC%95%BC%ED%95%98%EB%82%98/ 글을 참고하여 기록해보려한다. 1. 느슨한 결합을 유지하기 위해 객체간의 결합도를 낮추어 변화에 유연한 개발을 하기 위해서라고한다. 하나의 인터페..
2023.02.20 -
Maven VS Gradle
항상 Gradle만 사용해오다가 Maven을 사용하려니까 복잡한게 한두개가 아니다. 그래서 두개의 차이점을 정리해보았다. 결론부터 말하자면 기능면에서는 Gradle이 좋다. 비교적 최근에 나왔기 때문이다. 그리고 빌드속도도 빠르다. XML을 사용하지 않아도 된다. 하지만 현재 Maven프로젝트를 더 많이 사용한다고 한다. 익숙하기 때문이다. 나중에 시간이 지나면 Gradle이 앞설것 같지만, 현재 유지보수하는 대부분의 프로젝트들이 Maven으로 구성되어있기때문에 빌드과정에서 비용상의 문제가 발생하지 않는 이상 Gradle을 쓰지 않을 이유는 없다고 한다. https://hyojun123.github.io/2019/04/18/gradleAndMaven/ Maven과 Gradle의 차이 Maven vs Gr..
2023.02.01