1. 개요현재 프로젝트에서 Spring Security로 세션-쿠기 기반 인증을 사용하며, Spring SecurityFilterChain을 커스터마이징하여 REST API 방식으로 인증을 처리하고 있다. Form 로그인 방식을 사용하지 않고, AbstractAuthenticationProcessingFilter를 상속받은 커스텀 인증 필터( ApiAuthenticationFilter)를 UsernamePasswordAuthenticationFilter 이전에 실행되도록 등록했다. SecurityFilterChain 구성 예시@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http ..

Programming
개요보통 단위 테스트에서 의존 객체의 메서드 호출을 검증하기 위해 verify(), BDDMockito.then() 메서드를 사용한다.의존 객체의 메서드 호출 여부외에도 호출 시 전달된 인자까지 검증하고 싶어 찾아보다가, ArgumenetCaptor라는 것을 알게되었다. ArguementCaptor란?Mockito에서 제공하는 테스트 유틸리티로 모킹된 객체의 메서드 호출될 때 전달된 인자를 캡처(capture)하여, 테스트 코드 내에서 해당 인자를 검증할 수 있게 하는 기능이다.이를 통해, 단순히 메서드 호출 여부뿐만 아니라, 호출 시점에 어떤 인자가 전달되었는지에 대해 검증할 수 있다. ArguementCaptor 적용 코드ArgumentCaptor.forClass(User.class)를 통해 캡처하고..
1. 개요@DataJpaTest를 통해 Repository 계층에 대한 슬라이스 테스트 작성하고 있었다.그 과정에서 메서드 레벨에서 개별적으로 테스트를 실행했을 때는 정상적으로 테스트가 통과되었지만, 클래스 레벨 혹은 전체 테스트를 실행했을 때 테스트가 실패하는 경우가 발생했다. 코드와 로그를 통해 문제의 원인을 파악해 보자. 2. 문제 코드문제 코드data.sql 파일은 테스트용 데이터를 삽입하기 위한 sql 구문이 들어 있는 파일이다.@Sql을 통해 테스트 데이터 삽입을 위해 data.sql을 실행하고 있다.@DisplayName("Repository - 회원")@Sql(scripts = "/sql/data.sql")@Import(TestJpaConfig.class)@DataJpaTestclass U..
1. 개요김영한님의 실전! '스프링 부트와 JPA 활용2 - API 개발과 성능 최적화' 강의를 수강하면서 개인적으로 중요하게 생각하는 핵심 부분과 새롭게 알게된 내용을 정리한 포스팅입니다https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-API%EA%B0%9C%EB%B0%9C-%EC%84%B1%EB%8A%A5%EC%B5%9C%EC%A0%81%ED%99%94/dashboard 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 강의 | 김영한 - 인프런김영한 | , 스프링 부트, 실무에서 잘 쓰고 싶다면? 복잡한 문제까지 해결하는 힘을 길러보세요. 🚩 본 강의는 로드맵 과정입니다. 본 강의는 자..
1. 개요김영한님의 '실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발' 강의를 수강하면서 개인적으로 중요하게 생각하는 핵심 부분과 새롭게 알게된 내용을 정리한 포스팅입니다https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1/dashboard 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 강의 | 김영한 - 인프런김영한 | , 스프링 부트, 실무에서 잘 쓰고 싶다면? 깊이있는 설계와 개발을 경험해 보세요. 🚩 본 강의는 로드맵 과정입니다. 본 강의는 자바 백엔드 개발의 실전 코스를 시작하는 첫 강의입니www.inflearn.com 2. 도메인 모델 ..
1. 개요Spring Boot에서 정의되지 않은 API를 호출할 때, 기본적으로 반환되는 404 응답을 원하는 형식으로 커스터마이징 하고자 한다. 이를 위해 Spring Boot에서 예외를 처리하는 동작 방식을 분석하고, 응답을 커스텀 하게 정의해보자. 기본적으로 정의되지 않은 API를 호출하면 아래와 같은 응답이 반환된다. 1. 헤더의 미디어 타입이 text/html 일 때미리 정의된 에러 페이지를 반환한다. 2. 헤더의 미디어 타입이 text/html 아닐 때미리 정의된 JSON 형식의 응답을 반환한다.{ "timestamp": "2025-04-03T06:05:25.489+00:00", "status": 404, "error": "Not Found", "path": "/api/v..
1. 개요Spring Boot로 시계열 데이터베이스인 InfluxDB 2와 연동하는 방법에 대해서 알아보자. 2. InfluxDB 서버 환경 구성먼저 InfluxDB를 도커로 띄워보자. https://docs.influxdata.com/influxdb/v2/install/use-docker-compose/ Install InfluxDB using Docker Compose | InfluxDB OSS v2 DocumentationThank you for your feedback! Let us know what we can do better:docs.influxdata.comdocker-compose.ymlversion: '3.8'services: influxdb: image: influxdb:2 ..
1. 개요김영한 님의 '자바 ORM 표준 JPA 프로그래밍 - 기본편' 을 들으면서 정리하는 포스팅입니다. https://www.inflearn.com/course/ORM-JPA-Basic 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 | 김영한 - 인프런김영한 | JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 실무에서도www.inflearn.com 2. JPQL이란?실제 애플리케이션을 개발할 때에는 필요한 데이터를 가져오기 위해서는 다양한 검색조건과 복잡한 조인쿼리를 작성해야할 때가 많다. JPA에서는 검색조건과 조인쿼리를 해결하기 위해 SQL을 추상화 한 JPQL..
1. 개요김영한 님의 '자바 ORM 표준 JPA 프로그래밍 - 기본편' 을 들으면서 정리하는 포스팅입니다. https://www.inflearn.com/course/ORM-JPA-Basic 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 | 김영한 - 인프런김영한 | JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 실무에서도www.inflearn.com 2. JPA의 데이터 타입 분류JPA에서 데이터 타입을 분류할 때 2가지 타입으로 분류한다.a. 엔티티(Entity) 타입@Entity로 정의한 객체PK 값으로 관리가 되기 때문에 데이터가 변해도 지속적으로 추적 가능ex..
1. 개요김영한 님의 '자바 ORM 표준 JPA 프로그래밍 - 기본편' 을 들으면서 정리하는 포스팅입니다. https://www.inflearn.com/course/ORM-JPA-Basic 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 | 김영한 - 인프런김영한 | JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 실무에서도www.inflearn.com 2. 영속성 전이란?영속성 전이는 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태를 만드는 것이다. 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장하는 경우, 부모 엔티티를 삭제할 때 자식 엔티티도 ..