Spring 97

[Spring] Webclient 란❓ (RestTemplate vs WebClient)

아래의 글 순서대로 읽으시면 해당 글을 이해하시는데 족흠 도움이 됩니다 🙏 ⚙️ Block, Non-Block, sync(동기), Async(비동기) 의 간단한 개념 [Spring] Webclient 란❓ (RestTemplate vs WebClient) (now) [Spring] WebClient 사용방법 가이드 [spring] WebFlux란 + Reactor 객체란 (Mono 와 Flux) 📗 이번 포스팅에서는, Spring 에서 외부 API 와 통신하는 WebClient 에 대해서 공부해보고자 합니다...!!!! 옛날 글에서 간단하게 Spring RestTemplate 에 대해서 잠깐 공부한적이 있는데 Spring 5.0 부터는 WebClient를 권장하고 추후부터 RestTemplate 는 de..

Spring/Spring Boot 2022.11.08

[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] 로그 프레임워크와 로그백이란 - 로깅에 대해 알아보자

이번 포스팅은, CS 요청건 처리 시, 과거 이력을 확인해야할 때, 로그를 효율적으로 남기지 못해 명확한 결과를 전달하지 못한 아쉬운 경험을 토대로 Spring Boot 를 이용하여 로깅을 설정해보기위한 시도 글입니다..ㅠ 실스코드 Github 📌 하고싶은 것 spring 으로 서버를 띄울 시 로그에, 요청 들어온 "API Method, API 주소, 요청 응답값" 을 로그로 찍고싶었다. 📌 현재 현재는 default 로, sql 문과 hibernate 쿼리만 로그로 나오는 상황입니다. 📌 시도해 볼 것 및 키워드 logback-spring.xml 과 interceptor, 혹은 aop 를 이용해 요청을 가로체서 로그 남기기 🙏 내용이 길어져서 Spring로깅 인터페이스와, 구현체 및 로그백 설정에 대해..

Spring/Spring Boot 2022.10.24

spring swagger "/error" 해결하기

요청 로그와 응답 로그를 수정해서 요청하는 api 를 볼 수 있도록 수정했더니 아래와 같이, 끔찍한 에러로그가 발견되었다. 이게 응답 api를 인터셉터해서 로그 출력을해서 이런건지 아니면 원래 계속 error 응답을 보냈던건지 알수 없지만 swagger 에서 어떤 요청을 하고 그에 대한 에러 페이지를 걔속 보여주는 현상이 발견되었다. 📌 문제상황 HTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" "-" 220.76.132.249 - - [13/Oct/2022:13:55:27 +0900] "도메인.com/" "GET /null/swagger-resources/configuration/security HTTP/1.1" 401 201 "http://도메인/swagger-..

Spring/Spring err 2022.10.18

[Spring DB 1편] (2) 커넥션풀과 데이터소스 이해

인프런 김영한 - 스프링 DB 1 강의를 듣고 정리한 글 입니다. 목차 Connection Pool 이란 DataSource 란 DataSourc 예제 1. 커넥션 풀 이해 이전 게시물의 방법대로 JDBC 를 사용한다면 데이터베이스에 접근할 때 마다 매번 커넥션을 획득해야하고 아래와 같은 불필요한 커넥션 과정을 거쳐야합니다. 커넥션 획득 과정 어플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다. DB 드라이버는 DB 와 TCP/IP 커넥션을 연결한다. 물론 이 과정에서 3 way handshake 같은 TCP/IP 연결을 위한 네트워크 동작이 발생한다. DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW 와 기타 부가정보를 DB 에 전달한다. DB는 ID, PW 를 통해 내부 인증을 완료하..

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

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

[Spring Data Jpa] delete(Entity e) vs deleteById 차이

그저 궁금해서 알아보는 jpa delete 와 deletById 의 차이점 결론부터 말하면 똑같다. deleteById 는 findbyId + delete(entity e) 의 과정이 합쳐진 메소드라고 볼 수있습니다. 👏🏻 두 메소드의 차이점은 deleteById를 사용하면 내부적인 findById 조회 시 값이 없을 경우 EmptyResultDataAccessException 이 발생한다는 점 입니다. 따라서 엔티티조회시, 커스텀한 익셉션을 떨어트려 메세지를 담고싶다면 delete 를 사용하는게 마음이 더 편하다..? public Notice getNotice(final Integer idx) { return noticeRepository.findById(idx).orElseThrow( () -> ne..

Spring/Spring Boot 2022.09.26

JPA DTO PROJECTION - 클래스 기반, 인터페이스 기반

jpa 로 데이터를 불러올때, dto 혹은 엔티티말고 다른 무엇인가로 데이터를 담는방법 = 프로젝션 하고싶은 것 queryDsl 을 사용하지 않고 간단하게 jpa 만을 사용해서 dto를 담고싶었습니다. interface 기반의 dto 프로젝션이 가능하다는 것을 알고 있지만 재사용성을위해 dto class 그대로 사용하고싶었습니다. 문제 하지만 컬럼명이 맞지않아서 오류가 났고 이를 해결...해야함 인터페이스 기반이 아닌 클래스 기반 프로젝션을 할 때 에러가 남 no converter found capable of converting from type [org.springframework.data.jpa.repository.query.abstractjpaquery$tupleconverter$tupleback..

Spring/Spring Boot 2022.09.15

[Spring DB 1편] (1) Jdbc의 이해

인프런 김영한 - 스프링 DB 1 강의를 듣고 정리한 글 입니다. jdbc 의 등장배경과 사용방법, jdbc 연결방법에 대해서 다룹니다. 목차 jdbc 란 jdbc의 역사? JDBC 와 최신 데이터 접근 기술 데이터베이스 JDBC 커넥션 JDBC DriverManager 이해 JDBC 를 사용한 간단한 CRUD 1. jdbc 란 JDBC(Java Database Connectivity) 는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API 입니다. 2. jdbc 등장이유 어플리케이션을 개발할 때 중요한 데이터는 대부분 데이터베이스에 보관합니다. 클라이언트가 서버(어플리케이션)에 요청을 보내면, 데이터를 저장하거나 조회하는 것을 아래처럼 데이터베이스를 사용하여 처리합니다. 커넥션 연결: 주로 TC..