spring

보통 협업을 진행하다 보면 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..
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( // ..
작성 개요평소 개인적으로 사용하기도 하고 현업에서도 사용하고 있는 Spring을 충분히 이해하고 있는가?라는 생각을 가지고 동작 원리에 대해 다시 한 번 정리하게 되었습니다. 어디까지 분석할 것인가?어디까지 쓸 것인가를 가장 고민하게 되었는데,  본 글을 쓰게 된 목적이 MVC 과정을 어떻게 수행하는지가 목적이기 때문에, 그 과정에서 개별 어노테이션이 어떻게 동작하는지 까지 분석하는 것은 오버스펙일듯 하여 추후 세부적으로 접근 가능하게끔 하는 가이드 문서쯤 어딘가..? 라는 글을 적는게 좋을 것 같았습니다..ㅎㅎ SpringBoot의 시작SpringBoot는 어떻게 시작될까요? SpringBoot는 다음과 같이 다양한 실행 방식을 제공합니다.Intellij 사용 시, [Gradle > bootRun]co..
@DataJpaTest를 어떻게 작성하는지에 대한 기록 JPA 테스트를 위한 의존성 구성 dependencies { implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.15.2") implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.jetbrains.kotlin:kotlin-reflect") runtimeOnly("com.mysql:mysql-connector-j") // test container를 위한 의존성 라이브러리 testImplementation("org.springframework.boot:spring-boot..
iron_jin
'spring' 태그의 글 목록