JWT 인증 필터를 왜 @Component로 등록하면 안 되는가? - JWT 인증 필터는 @Component로 빈 등록을 하면 Spring Security의 필터 체인에 제대로 결합되지 않아 의도한 대로 동작하지 않을 수 있습니다.필터 체인에서의 순서가 엉킬 수 있기 때문입니다. Spring Security의 필터 체인 내에서 필터를 등록하려면, @Component로 등록하는 대신 SecurityConfig에서 명시적으로 등록해야 합니다.@Component로 필터를 등록하게 되면, Spring이 이 필터를 자동으로 FilterChain에 추가하게 되는데, 이 방식은 Spring Security 필터 체인과 충돌할 수 있습니다. Spring Security는 보안 필터 체인을 구성하는 순서가 매우 중요하며..
@Scheduled스프링 프레임워크에서 제공하는 @Scheduled 어노테이션을 사용하면 간단하게 스케줄러 기능을 구현할 수 있습니다. 이 글에서는 @Scheduled의 개념과 이를 활용한 구현 방법을 자세히 설명하겠습니다. @Scheduled 어노테이션 개념@Scheduled 어노테이션은 스프링의 스케줄링 작업을 간단하게 설정할 수 있게 해주는 어노테이션입니다. 주기적으로 실행되어야 하는 작업을 선언적으로 설정할 수 있으며, 다양한 스케줄링 옵션을 제공합니다.스케줄링 옵션:fixedRate: 고정된 주기로 작업을 실행합니다.fixedDelay: 이전 작업이 끝난 후 일정 시간이 지난 뒤에 작업을 실행합니다.cron: 크론 표현식을 사용하여 복잡한 주기 설정을 할 수 있습니다. @Scheduled 사용하..
Ping 테스트네트워크 통신 여부를 확인해봅시다.import java.net.InetAddress; // InetAddress importpublic void pingCheck() { log.info("[PingService] Start Ping Check ..."); List siteList = null; try { siteList = pingStore.getSiteList(); // DB에서 ip정보가 담겨있는 site정보를 가져옵니다. log.info("[PingService] Site ID List : " + siteList); } catch (Exception e) { e.prin..
Spring Quartz, Spring Batch, @Scheduled 의 차이점Spring에서 작업 스케줄링과 배치 처리를 관리하는 세 가지 주요 방법은Spring Quartz, Spring Batch, 그리고 @Scheduled 어노테이션입니다.이들 각각의 차이점을 이해하면, 각 방법이 적합한 상황을 명확히 알 수 있습니다.Spring QuartzSpring Quartz는 Quartz Scheduler 프레임워크를 Spring과 통합한 것으로, 정교하고 강력한 작업 스케줄링 기능을 제공합니다.기능:복잡한 스케줄링을 지원 (예: 크론 표현식, 반복 인터벌 등)다양한 작업 트리거 (시간 기반, 이벤트 기반 등)작업의 상태 유지 (persistent jobs)클러스터링 지원 (분산 환경에서 작업을 수행)작..
WebFlux란 무엇인가? WebFlux는 Spring 5에서 새롭게 추가된 Reactive-stack의 웹 프레임워크이며, 클라이언트/서버에서 리액티브(reactive) 애플리케이션 개발을 위한 논블로킹 리액티브 스트림을 지원한다. WebFlux의 등장 논블로킹으로 동작하는 웹 스택의 필요성 때문에 등장하게 되었다. 기존 SpringMVC의 Servlet API는 v3.1부터 논블로킹을 위한 API제공해왔지만 동기적으로 처리하는 모듈(Filter, Servlet)과 블로킹 방식의 API(getParameter, getPart)들이 있기에 완벽한 논블로킹 환경의 개발을 할 수 없었다. 비동기 논블로킹 환경의 서버 Netty가 부상하고 있었으며 Netty와의 연동을 위해 Spring은 새로운 API가 필요..
모듈 간의 의존성 주입 한 프로젝트 내에 모듈간 의존성 주입을 해보자. 현재 보이는 모듈에서 mod-com 모듈을 toc-nur 모듈에서 사용할 수 있도록 하려고 합니다. DependencyManagement와 Dependencies에 대해서 알아보았습니다. DependencyManagement Maven의 dependencyManagement 섹션은 의존성들의 버전을 중앙 집중적으로 관리하기 위한 것입니다. dependencyManagement에 선언된 의존성은 실제 프로젝트의 의존성에 영향을 미치지 않습니다. dependencyManagement 섹션: 프로젝트에서 사용하는 라이브러리들의 버전을 중앙에서 통합적으로 관리하는 곳입니다. Dependencies dependencies 섹션은 실제 프로젝트..