Spring 91

[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..

[Spring] java private 메소드 테스트 코드 작성하기

Junit 을 사용해서 유닛테스트를 작성할 때, private 접근제어자로 선언된 메서드가 반환하는 값을 테스트 하고 싶었습니다 ex) Private Method public test { private String getString(final String name, final int age) { return name + age; } } 여러 방법이 있었지만, 저는 간단하게 Spring Framework에서는지원해주는 ReflectionTestUtils를 사용해주었습니다 @Test @DisplayName("private 메소드 접근하기") void fillDate_continuity() { //given String name = "test"; int age = 5; //when final String re..

[Spring] Spring JWT 인코딩, 디코딩 하기 - Java Json 파싱

같이 보면 좋을 연결된 포스팅들 ✔️ Spring Jwt Refresh Token - 인증 인가의 흐름 ✔️ [Spring] jwt란 - jwt 내부구조, 동작과정, 스프링에서 파싱하기 👉 [Spring] Spring JWT 인코딩, 디코딩 하기 - Java Json 파싱 이번에 포스팅할 내용은 spring 에서 jwt 를 만들고, 외부에서 받아온 jwt 를 해석하는 방법과 jwt 해석한 byte 정보를 json 으로 파싱해서 jwt payload 에서 원하는 정보를 추출하는 방법 입니다. 📗 Spring JWT 만들기 Token 을 만드는 방법까지는 아니고, 간단하게 Test를 위해 Spring 에서 JWT 만드는 방법입니다. 저는 jjwt 라이브러리를 사용했고, jjwt는 JWT 토큰 생성 및 JWT..

Spring/Spring Boot 2022.08.23

[Spring] jwt란 - jwt 내부구조, 동작과정, 스프링에서 파싱하기

같이 보면 좋을 연결된 포스팅들 ✔️ Spring Jwt Refresh Token - 인증 인가의 흐름 👉 [Spring] jwt란 - jwt 내부구조, 동작과정, 스프링에서 파싱하기 ✔️ [Spring] Spring JWT 인코딩, 디코딩 하기 - Java Json 파싱 이전 포스팅에서 인증과 인가의 흐름, 인증하는 방법들에 대해 공부를 해보았고 이번에는 실질적으로 자주 사용하고 사용되는 JWT 토큰에 대해서 조금 더 자세하게 공부해 보고자 합니다. JWT란 👏🏻 JWT는 Json Web Token의 약자로, 단어 그대로 Json 기반의 Web Token입니다. 발급된 토큰값을 Json 객체로 변환시켜 client에게 전송해주는 것을 말합니다. JWT는 JWS(Json Web Signature) 와 J..

Spring/Spring Boot 2022.08.18

Spring JWT Refresh Token - 인증 인가의 흐름

같이 보면 좋을 연결된 포스팅들 👉 Spring Jwt Refresh Token - 인증 인가의 흐름 ✔️ [Spring] jwt란 - jwt 내부구조, 동작과정, 스프링에서 파싱하기 ✔️ [Spring] Spring JWT 인코딩, 디코딩 하기 - Java Json 파싱 사내에서 Refresh Token 관련된 부분의 이슈가 생겨서, 리팩토링 하기전에 문제점에 대해 파악한 부분과 인증과 인가의 흐름을 명확하게 집고 넘어가야겠다는 필요성을 느껴 그에 대한 기록을 남깁니다. 📌 하고자 하는것 : jwt 액세스 토큰이 만료되면 jwt 리프레쉬 토큰으로 액세스 토큰 발급 📌 문제 : 액세스 토큰 만료 후, Controller 에서 principal 객체로 로그인 한 사람을 가져올려고하는데 null 이 들어오는..

Spring/Spring Boot 2022.08.17

[Spring] 무한스크롤 구현 및 성능 개선 하기 - No Offset 페이지네이션

안녕하세요 오늘은 페이지네이션의 성능을 개선 시키는 방법 중 하나인 no-offset 페이지네이션에 대해 기록을 남겨보고자 합니다! 예전에 스프링 페이지네이션에 대해 포시팅한적이 있는데 이번에 실무에서 무한스크롤을 적용해야해서 직접! 사용해볼 기회가 생겨 더 자세한 내용을 기록으로 남기고자 합니다!! 👏🏻 이전 포스팅해서는, 아래와 같은 방법을 커서 페이지네이션이라고 칭했는데, 여기서 말하는 No Offset 과 같은 의미의 단어로 말했습니다. jojoldu님의 글을 보고, MySql 에서 Cursor 라는 키워드를 다른 의미로 쓰고있다는걸 알게 되어, 커서페이징을 👉 No offset 이라 말했습니다. jojoldu님의 블로그글을 많이 참고하였으며, 아래의 순서대로 진행됩니다 😊 No offset 이란..

Spring/Spring Boot 2022.08.12

[Maven] 메이븐이란, mvn clean install vs clean package

Maven 이란, xml 형식으로 이루어진 빌드 도구 입니다. maven clean, install, package 📌 clean 은 컴파일 된 결과물인 .target 폴더를 지워주는 메이븐 명령어이고 📌 install 과 package 는 프로젝트를 빌드하여 jar 실행 파일을 만들어주는 명령어입니다. Mvn install vs package mvn install 과 mvn package 의 차이점은 로컬 maven 폴더에 jar 파일을 저장해주냐 안해주냐의 차이입니다. package 는 생성된 jar파일이 .target 폴더에 위치하고 install 은 생성된 jar 파일이 .target 하위 와, 로컬 mvn 폴더 내의 repoisoty 폴더 생성됩니다. 메이븐 생명주기 (maven lifecycl..

Spring/기타 2022.07.30
반응형