웹 개발자를 위한 CORS 이해와 Spring Boot에서의 적용 방법
·
Spring/Spring 기초 지식
이번 포스트에서는 CORS에 대한 심화 내용을 설명한다. 📌 서론 웹 개발을 하다 보면, 다양한 출처(origin)에서 서버로 요청을 보내는 상황이 자주 발생한다. 이때 CORS(Cross-Origin Resource Sharing) 정책이 중요한 역할을 한다. Spring Boot와 React를 예로 들어 CORS에 대해 자세히 알아보도록 하자 1. 요청 헤더와 응답 헤더는 어떻게 다뤄지나? 요청 헤더와 응답 헤더: 기본 원칙 웹 애플리케이션에서 서버로 데이터를 요청할 때 사용하는 '헤더'는 요청 정보를 담고 있다. 예를 들어, 로그인 정보나 데이터 형식 등이 여기에 해당된다. 하지만, 요청을 받은 서버가 응답을 줄 때, 이 요청 헤더는 자동으로 응답 헤더로 넘어가지 않는다. HttpServletReq..
Spring: 필터(Filter)가 인터셉터(Interceptor)와 다른점
·
Spring/Spring 기초 지식
이번 포스트에서는 Spring Filter에 대해서 알아보도록 하자 1. Spring에서 Filter의 개념 필터의 정의 필터는 웹 애플리케이션에서 클라이언트의 요청과 서버의 응답을 가로채는 재사용 가능한 코드 조각이다. 서블릿 스펙의 일부로, 요청이 서블릿에 도달하기 전과 응답이 클라이언트로 반환되기 전에 특정 작업을 수행할 수 있다. 서블릿 필터의 기본 원리 필터 체인을 통해 여러 필터를 순차적으로 적용할 수 있다. 각 필터는 doFilter() 메서드를 통해 요청과 응답을 조작하고, 필터 체인의 다음 필터나 최종 목적지(서블릿 또는 정적 리소스)로 요청/응답을 전달할 수 있다. 스프링 부트에서 필터의 역할 스프링 부트는 자동 구성을 통해 필터를 쉽게 추가하고 관리할 수 있게 해준다. 보안, 트랜잭션..
[Spring] 스프링은 추상화를 어떻게 적용했을까?
·
Spring/Spring에서 Java 활용하기
스프링은 추상화를 어떻게 사용할까? 간단한 예시로 알아보자 📌 서론 이번 포스트는 실제로 스프링을 개발하면서 자주 사용하게 되는 기능들을 기준으로 정리하였으며 쉽게 이해하기 위해 간단한 코드로 내용을 구성하였다. 만약 추상화의 개념이 부족하다면 아래의 글을 읽어보는것을 추천한다. [Spring] 추상화란 무엇인가? 자바의 "추상화"의 개념을 알아보고 스프링을 이것을 어떻게 사용하는지 알아보자 📌 서론 항상 추상화를 사용하고 있지만 누군가 "그래서 대체 추상화가 뭔데?"라고 물어볼때마다 바로바로 떠 curiousjinan.tistory.com 1. Java의 추상화 추상 클래스와 추상 메서드 Java에서는 abstract 키워드를 사용하여 추상 클래스와 추상 메서드를 정의할 수 있다. 추상 클래스는 인스턴..
[Spring] 스프링과 자바의 동시성과 병렬 처리
·
Spring/Spring 기초 지식
Java의 동시성과 병렬 처리에 대해 알아보자.📌 서론백엔드 개발을 하다보면 동시성 문제에 직면하게 되는 경우가 있다. 그러나 동시성이 무엇인지 모르면 문제가 발생하는 원인조차 모를수 있기 때문에 간단하게라도 지식을 얻어두면 좋다고 생각한다. 이 글을 통해 정말 간단하게 자바의 동시성이 무엇이고 병렬 처리 기능은 어떤것이 있는지 알아보자! 1. 간단하게 알아보는 동시성 문제동시성이 뭔데?동시성이란 것은 여러 스레드가 동시에 같은 api를 호출한다고 생각하면 이해하기 쉽다.예를 들면 스프링은 멀티 스레드로 동작하는 프레임워크이기 때문에 100개의 같은 요청이 1개의 api에 동일한 시간에 발생할 수도 있다. 이 상황에는 스레드의 경쟁이 발생할 것이고 "동시성 제어"가 되지 않는다면 서버에 문제가 발생할 ..
Spring Boot: Gradle 버전 확인하기
·
Spring/Spring 설정
Spring Boot: Gradle 버전 확인하기 📌 서론 이번 포스트에서는 특정 API나 Jenkins를 사용할때 Spring과 그 tool의 Gradle 버전을 맞춰주기 위해 필요한 Spring Boot 프로젝트의 gradle 버전 확인하는 방법을 소개한다. 1. IntelliJ에서 프로젝트 내부 파일 검색하기 인텔리제이 기준으로는 shift + shift (shift두번 빠르게 클릭)으로 파일명을 검색하는게 가장 빠르다. 이 파일을 검색해 보자 : gradle-wrapper.properties 2. 파일 경로 확인하기 gradle-wrapper.properties 파일로 들어간 후 아래의 이미지와 같이 intelliJ 좌측 상단을 보면 동그라미가 겹쳐진 모양이 있는데 이걸 클릭한다. 동그라미를 클릭..
Spring: @ControllerAdvice와 AOP를 함께 사용하여 에러 로깅하기
·
Spring/Spring 기초 지식
@ControllerAdvice와 AOP 를 동시에 적용하여 로깅을 해보자 📌 서론 Spring Boot에서는 일반적으로 @ControllerAdvice와 @ExceptionHandler를 사용하여 전역 에러 핸들링을 수행한다. 그러나 이러한 방식은 상세한 로깅에 한계가 있을 수 있다. 이 글을 작성하게 된 계기는 많은 개발자들이 로깅을 어떻게 효율적으로 할 수 있을지, 그리고 예외 상황에서 어떻게 로깅을 해야 할지에 대한 고민을 하고 있기 때문이다. 다니선 회사의 동료 또한 이에 대한 궁금증을 가졌기에 이 글을 통해 그러한 고민을 조금이라도 해결할 수 있으면 좋겠다. 1. 문제 상황 파악 @ExceptionHandler가 명시된 메서드에서는 지정된 Exception 객체만을 받을 수 있기 때문에, 에러..
[Spring] Data JPA의 구조를 알아보자
·
Spring/JPA
스프링 Data JPA의 구조를 알아보자 📌 서론 JPA를 사용하다보니 대체 어떻게 나는 내 Repository를 생성하고 JpaRepository를 상속받기만 해서 JPA의 기능을 사용할 수 있는 것인지 궁금해졌고 이에 Diagram부터 파고들어 분석을 하기 시작했다. 1. JpaRepository와 상속 관계 Repository 마커 인터페이스로서, 실제 구현이 없다. CrudRepository CRUD(Create, Read, Update, Delete) 기능을 제공한다. PagingAndSortingRepository, ListPagingAndSortingRepository 페이징 및 정렬 기능을 추가로 제공한다. ListCrudRepository List 컬렉션에 특화된 CRUD 및 페이징/정렬..
Spring Boot: @ControllerAdvice/@RestControllerAdvice로 예외처리하기
·
Spring/Spring 기초 지식
@ControllerAdvice와 @RestControllerAdvice에 대해 자세히 알아보자 📌 서론 프로그래밍에서 예외 처리는 매우 중요한 부분이며, Spring Boot에서는 @ControllerAdvice와 @RestControllerAdvice를 통해 이를 효율적으로 수행할 수 있다. 이 어노테이션들은 코드의 재사용성과 유지 보수성을 높여, 복잡한 비즈니스 로직에서도 예외 상황을 안정적으로 관리할 수 있게 해준다. 1. @ControllerAdvice이해 @ControllerAdvice란? @ControllerAdvice는 Spring 3.2에서 도입된 어노테이션으로, 모든 @Controller 클래스가 공유하는 공통 로직을 정의할 때 사용한다. 주로 예외 처리와 바인딩 설정, 모델 객체 등에..