보통 협업을 진행하다 보면 API 스펙을 전달해주고 완벽하게 테스트를 진행했는데도 들려오는 답변이 있습니다."API에서.. cors 에러가 발생해요.." 처음 협업을 진행하면서 CORS에 대해서 잘 모르기도 했었고, 스프링에서는 단순한 설정으로 이를 해결할 수 있었기 때문에 제대로 알아보고려고 하지 않았었죠. 이번에는 너무나 간단한 설정탓에 제대로 이해하지 못 했었던 CORS에 대해서 정리하고자 합니다. CORS란? CORS(Cross-Origin Resource Sharing)란, 클라이언트가 다른 출처(origin)에서 리소스를 요청할 때 발생하는 오류로 브라우저상에서 허용되지 않은 다른 출처를 제한하는 데 사용되는 보안 관련 오류입니다. CORS는 보통 아래 두 가지 이유로 발생하게 됩니다.브라우저..
전체 글
배운 것에 대한 내 생각을 가지고 정리하자Spring을 사용하다 보면 어느 순간 버전업이 많이 진행돼서 기존에 사용하던 버전이 레거시가 될 수도 있고 새로운 버전에서 지원해주는 강력한 기능을 사용하고 싶어서 마이그레이션 해야 하는 상황이 올 수 있습니다. 이러한 버전업을 요구하는 상황이 올 경우 어떻게 대처해야 할지, 어떤 부분을 수정하는 게 좋을지를 미리 학습하는 과정을 통해 버전 마이그레이션을 학습해보려 합니다. 마이그레이션 요구사항항목현재 버전변경 버전JDK1.817Gradle5.6.X8.3SpringBoot2.1.X3.1.4 시작 템플릿 build.gralde의존성은 간단하게 spring-boot-starter-web과 롬복 정도만 구성했습니다.plugins { id 'java' id 'org.springframework.bo..
요즘 보통 캐시라는 기술이 곧 레디스다 라고 불릴만큼 레디스는 캐시로 많이 사용되는데요,레디스가 어떤 기술이길래 캐시로 사용되는지 레디스의 또 다른 강점은 무엇인지 알아보고자 합니다. 캐시란? 우선 캐시라는 것이 무엇인지 알아볼텐데, 캐시의 정의는 데이터를 빠르게 접근할 수 있도록 임시로 저장하는 고속 저장소를 의미하고 빠르게라는 모호한 의미를 조금 더 정확하게 표현하면 원격 디스크 저장소(데이터베이스 등)에 저장되어 있는 데이터에 접근하는 비용과 시간을 절약하기 위해 메모리(RAM)에 데이터를 저장하여 빠르게 접근하는 기술입니다. 캐시는 정말 다양하게 활용되지만, 대중적으로 사용되는 대표적인 사례는 자주 사용되는 데이터(상품 조회 같은)를 캐시에 올려두고 접근하여 사용자 경험을 향상시키는 사례가 있습니..
Transaction이란?Spring을 사용하다 보면 자연스럽게 MVC 구조를 접하게 되고, 이 과정에서 데이터 저장소(Model)에 접근하기 위해 JDBC, JPA, Hibernate 등의 기술을 활용하게 됩니다.이러한 기술들을 사용하여 데이터 저장소에 요청할 쿼리를 만들고 실행하기 전까지의 과정을 하나의 작업 단위라고 하는데, 이를 한 단어로 트랜잭션이라고 부릅니다.트랜잭션은 작업 단위 안에서 발생하는 조회, 생성, 수정, 삭제 등의 여러 작업을 하나로 묶어 처리하는데요,예를 들어, 주문이라는 작업은 다음과 같은 단계를 포함하며, 이를 하나의 트랜잭션으로 처리합니다:사용자의 주문 요청상품 재고 감소주문 정보 저장사용자에게 주문 요청 완료 알림 발송이처럼 주문 작업은 여러 단계를 포함하는 하나의 트랜잭..
서론 항해 시작과 함께 진행한 이직 수습기간을 정신없이 마치고 메인 결제 관련 기능 작업을 진행하게 되었습니다. 어떻게 시기라는 게 이렇게 딱 맞는지, 항해를 진행했던 시기에는 바쁘게 일을 처리하는 상황이 없었는데 고맙게도 딱 끝마치고 나니 그동안 하지 못 했던 일들이 몰려온듯한 느낌이었네요 개인적인 이슈 관리는 노션에 진행하고 있었지만, 처음으로 메인 기능을 많이 고치게 되는 계기가 되어서 이를 적어보게 되었습니다. 이번에 맡게 되었던 개발 건은 기존 결제 기능에서 새롭게 추가된 기능을 녹여내기 위해 파라미터를 추가하여 저장하는 작업인데요,사실 겉으로 보기에는 별 게 없는 작업이고 신규 개발 건이면 내 입맛대로 만들 수 있는 작업이기도 합니다. 다만, '주문/결제'라는 이 키워드 하나로 그 내포되어 ..
안녕하세요, 이번에 알아볼 주제는 Spring의 Filter입니다. Spring에서는 WEB 요청을 위한 다양한 필터가 존재하는데요,이번 시간에는 Spring에서 기본적으로 제공 해 주는 필터 종류와 필터들이 어떻게 호출 되는지, 그리고 필터의 올바른 사용에 대해서 알아보려 합니다.Spring의 필터란?Filter는 Java Servlet API에서 제공하는 기능으로, HTTP 요청/응답에 대한 사전 및 사후 처리를 수행할 수 있는 기능을 제공합니다. 이는 Java 웹 애플리케이션에서 가장 기본적인 필터링 메커니즘입니다. 필터는 다양하게 사용되는데요, 주로 인증 및 권한 검사, 로깅 및 모니터링, 요청/응답 데이터 변환, CORS 설정 등으로 다양하게 사용되고 있습니다. Spring Filter는 Spr..
Event? Spring에서는 특정 동작이나 프로세스가 수행될 때, 특수한 행동을 일으키는 이벤트 라는 개념이 존재합니다. 예를 들면, JPA의 경우 엔티티의 감지를 위해 다음과 같은 리스너 어노테이션을 사용하고 있는 것을 볼 수 있는데요,@Entity@EntityListeners(UserEntityListener.class)public class User { @Id @GeneratedValue private Long id; private String name; // Getters and setters...} 이처럼 Spring 이벤트는 특정 동작이 수행될 때, 비즈니스 로직과 별개의 동작을 수행하는 이벤트를 처리할 수 있는 기능을 제공 해 주고 있는데, 오늘은 이에 대해서 ..
@ComponentScan의 동작 원리Spring 프레임워크에서 @ComponentScan은 지정된 패키지를 스캔하여 Spring 컨테이너에서 관리할 빈(Component)을 자동으로 등록하는 역할을 합니다.이 어노테이션은 주로 @Configuration 클래스와 함께 사용되며, Spring 애플리케이션 초기화 과정에서 매우 중요한 부분을 차지합니다. @ComponentScan은 @SpringBootApplication을 통해서 관리됩니다.@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan( // ..