Java/Spring
-
Runnable 인터페이스란?작업(Task)을 정의하기 위한 함수형 인터페이스이다.주로 스레드에서 실행할 작업을 정의할 때 사용된다. @FunctionalInterfacepublic interface Runnable { void run();} 추상 메서드인 void run() 메서드만 존재한다.@FuntionalInterface 가 붙어있는 함수형 인터페이스라서 람다식으로 표현 가능하다.결과값이 없고 예외도 throws 하지 않는 단순한 실행 작업을 나타낸다. ✅ 언제 사용하나요? Thread 생성 시 실행할 작업 정의ExecutorService 같은 스레드 풀에 작업 제출할때 사용 ✅ Thread와 함께 사용하는 예 일반 클래스package com.obo.controller;public cl..
Runnable 인터페이스, ExecutorService 인터페이스Runnable 인터페이스란?작업(Task)을 정의하기 위한 함수형 인터페이스이다.주로 스레드에서 실행할 작업을 정의할 때 사용된다. @FunctionalInterfacepublic interface Runnable { void run();} 추상 메서드인 void run() 메서드만 존재한다.@FuntionalInterface 가 붙어있는 함수형 인터페이스라서 람다식으로 표현 가능하다.결과값이 없고 예외도 throws 하지 않는 단순한 실행 작업을 나타낸다. ✅ 언제 사용하나요? Thread 생성 시 실행할 작업 정의ExecutorService 같은 스레드 풀에 작업 제출할때 사용 ✅ Thread와 함께 사용하는 예 일반 클래스package com.obo.controller;public cl..
2025.05.16 -
ShedLock 이란?Java 에서 ShedLock 은 분산 작업 환경에서 스케쥴러가 동시에 여러 인스턴스에서 실행되는 것을 방지하기 위해사용하는 분산 락 라이브러리다.쉽게 말해 Java 에서 스케쥴러가 돌고 있다고 치면 동시에 여러 스케쥴러가 같은 시간에 같은 동작을 하면안되기 때문에 Lock 을 걸어 같은 작업을 동시에 못하도록 막아버린다. 예를 들어 Spring Boot 어플리케이션이 이중화되어 2대가 있다고 하면@Scheduled 어노테이션이 존재하는 클래스가 2개가 존재하고 작업을 실행했을 때별도의 조치가 없다면 2개의 스케쥴 작업이 진행된다. 이때 데이터 중복 처리나 성능 문제가발생할 수 있기 때문에 ShedLock 을 사용하여 Lock 을 걸어 동시성 문제를 해결한다. 🔧 동작 원리 1...
Java ShedLock 이란?ShedLock 이란?Java 에서 ShedLock 은 분산 작업 환경에서 스케쥴러가 동시에 여러 인스턴스에서 실행되는 것을 방지하기 위해사용하는 분산 락 라이브러리다.쉽게 말해 Java 에서 스케쥴러가 돌고 있다고 치면 동시에 여러 스케쥴러가 같은 시간에 같은 동작을 하면안되기 때문에 Lock 을 걸어 같은 작업을 동시에 못하도록 막아버린다. 예를 들어 Spring Boot 어플리케이션이 이중화되어 2대가 있다고 하면@Scheduled 어노테이션이 존재하는 클래스가 2개가 존재하고 작업을 실행했을 때별도의 조치가 없다면 2개의 스케쥴 작업이 진행된다. 이때 데이터 중복 처리나 성능 문제가발생할 수 있기 때문에 ShedLock 을 사용하여 Lock 을 걸어 동시성 문제를 해결한다. 🔧 동작 원리 1...
2025.05.13 -
환경 : Spring Boot 3, HikariCPSpring Boot 에서 DBCP 의 Connection Pool 에서 풀 안의 커넥션이 유효한지에 대한 쿼리문을 날리는데그게 ValidationQuery 이다.해당 쿼리문의 시간을 설정하고 로그로 확인하기 위해 작성하는 글이다. 1. pom.xml 에 log4j2 dependency 추가하기 org.springframework.boot spring-boot-starter-log4j2 2. Spring Boot 기본 logback 제외하기Spring Boot 의 기본 log 라이브러리인 logback 을 제외시킨다. org.springframework.boot spring-boot-starter org.springframewo..
Spring Boot log4j2 설정하기 (Spring Boot3, HikariCP)환경 : Spring Boot 3, HikariCPSpring Boot 에서 DBCP 의 Connection Pool 에서 풀 안의 커넥션이 유효한지에 대한 쿼리문을 날리는데그게 ValidationQuery 이다.해당 쿼리문의 시간을 설정하고 로그로 확인하기 위해 작성하는 글이다. 1. pom.xml 에 log4j2 dependency 추가하기 org.springframework.boot spring-boot-starter-log4j2 2. Spring Boot 기본 logback 제외하기Spring Boot 의 기본 log 라이브러리인 logback 을 제외시킨다. org.springframework.boot spring-boot-starter org.springframewo..
2025.04.30 -
Spring Security 5 에서 6 버전으로 넘어가면서 변경된 SecurityContextPersistenceFilter 와 SecurityContextHolderFilter 를알아보자 SecurityContextPersistenceFilter 인증 처리 과정요청이 들어오면 SecurityContextRepository.loadContext() 를 호출해서 기존 인증 정보를 로딩한다.=> 인증정보가 들어있는 SecurityContext를 가져옴로딩된 SecurityContext를 SecurityContextHolderStrategy.setContext() 로 ThreadLocal 에 저장함=> SecurityContextHolderStrategy 는 실제로 ThreadLocalSecurityCont..
Spring Security 5에서 6로 변경된 필터 확인하기(SecurityContextPersistenceFilter, SecurityContextHolderFilter)Spring Security 5 에서 6 버전으로 넘어가면서 변경된 SecurityContextPersistenceFilter 와 SecurityContextHolderFilter 를알아보자 SecurityContextPersistenceFilter 인증 처리 과정요청이 들어오면 SecurityContextRepository.loadContext() 를 호출해서 기존 인증 정보를 로딩한다.=> 인증정보가 들어있는 SecurityContext를 가져옴로딩된 SecurityContext를 SecurityContextHolderStrategy.setContext() 로 ThreadLocal 에 저장함=> SecurityContextHolderStrategy 는 실제로 ThreadLocalSecurityCont..
2025.04.22 -
Process(프로세스) 란?메모리에 올라가 실행중인 프로그램을 말한다. Thread (쓰레드) 란?프로세스 안에서 실질적으로 작업을 실행하는 단위를 말한다. 예를 들어 생각해보면브라우저에서 음악을 들으면서 동시에 웹서핑을 한다고 치면음악 재생하는 쓰레드웹 페이지 로딩하는 쓰레드다운로드 중인 파일 쓰레드이 모든게 각각 독립된 Thread 에서 실행된다. ThreadLocal 이란?ThreadLocal 은 자바에서 멀티스레딩 프로그래밍을 할 때 사용되는 클래스이다.각 스레드가 독립적으로 값을 가지도록 해주며, 여러 스레드가 동시에 같은 변수를 사용할 때 발생할 수 있는문제를 해결할 수 있다. 일반적으로 멀티스레딩 환경에서는 공유 변수에 대한 동기화가 필요하다.하지만 동기화는 성능에 영향을 미칠 수 있으..
Java ThreadLocal 이란?Process(프로세스) 란?메모리에 올라가 실행중인 프로그램을 말한다. Thread (쓰레드) 란?프로세스 안에서 실질적으로 작업을 실행하는 단위를 말한다. 예를 들어 생각해보면브라우저에서 음악을 들으면서 동시에 웹서핑을 한다고 치면음악 재생하는 쓰레드웹 페이지 로딩하는 쓰레드다운로드 중인 파일 쓰레드이 모든게 각각 독립된 Thread 에서 실행된다. ThreadLocal 이란?ThreadLocal 은 자바에서 멀티스레딩 프로그래밍을 할 때 사용되는 클래스이다.각 스레드가 독립적으로 값을 가지도록 해주며, 여러 스레드가 동시에 같은 변수를 사용할 때 발생할 수 있는문제를 해결할 수 있다. 일반적으로 멀티스레딩 환경에서는 공유 변수에 대한 동기화가 필요하다.하지만 동기화는 성능에 영향을 미칠 수 있으..
2025.04.21 -
Spring Security 6 에서 AuthenticationSuccessHandelr 를 Implements 하고 Extends 하고 있는 SavedRequestAwareAuthenticationSuccessHandler 기본 클래스이다. Spring Security 에서 기본적으로 사용하고 있는 클래스를 사용하면서 로그인 성공 시 간단하게 필요한 URL 로 항상 Redirect 하는 방법을 알아보자. 기본 인증 과정은 아래와 같다.Spring Security 6 이고 기본 FormLogin 설정 Filter 인 UsernamePasswordAuthenticationFilter 클래스를사용하지 않고 Custom Filter 클래스를 만들었다.그리고 실질적인 로그인정보를 비교하는 Authenticati..
Spring Security 6 에서 AuthenticationSuccessHandler redirect Url 설정Spring Security 6 에서 AuthenticationSuccessHandelr 를 Implements 하고 Extends 하고 있는 SavedRequestAwareAuthenticationSuccessHandler 기본 클래스이다. Spring Security 에서 기본적으로 사용하고 있는 클래스를 사용하면서 로그인 성공 시 간단하게 필요한 URL 로 항상 Redirect 하는 방법을 알아보자. 기본 인증 과정은 아래와 같다.Spring Security 6 이고 기본 FormLogin 설정 Filter 인 UsernamePasswordAuthenticationFilter 클래스를사용하지 않고 Custom Filter 클래스를 만들었다.그리고 실질적인 로그인정보를 비교하는 Authenticati..
2025.04.21