Spring boot
-
Spring boot 기준으로 톰캣에 어플리케이션를 올렸다고 생각해보자 ✅ 메인 쓰레드의 역할Java 어플리케이션의 메인 쓰레드(Main Thread)는 프로젝트 내 프로젝트 명 + Application.java 파일을 보면public static void main(String[] args) 메서드가 존재하는데 어플리케이션의 최초 실행 흐름을 담당하는단 하나의 초기 진입점이다. Spring Boot 어플리케이션을 실행하면 main() 메서드에서 시작된다.@SpringBootApplicationpublic class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.cla..
Spring에서의 Thread 와 Thread PoolSpring boot 기준으로 톰캣에 어플리케이션를 올렸다고 생각해보자 ✅ 메인 쓰레드의 역할Java 어플리케이션의 메인 쓰레드(Main Thread)는 프로젝트 내 프로젝트 명 + Application.java 파일을 보면public static void main(String[] args) 메서드가 존재하는데 어플리케이션의 최초 실행 흐름을 담당하는단 하나의 초기 진입점이다. Spring Boot 어플리케이션을 실행하면 main() 메서드에서 시작된다.@SpringBootApplicationpublic class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.cla..
2025.05.21 -
Spring Boot 3 에서 동적 스케줄링이 필요해 어떤 방법으로 할까 고민하다가 비동기 형태의 방식으로ThreadPool 을 만들어 실행했다. 어플리케이션의 메인쓰레드, TaskScheduler 의 쓰레드, TaskExecutor 쓰레드는 각각 다른Thread Pool 을 만들어놓고 사용한다. 여기서 @Async 는 TaskExecutor 의 쓰레드를 사용해 비동기 처리한다. 1. @Async 사용을 위한 Config 설정package com.deotis.wisevoiceweb.system.config;import java.util.concurrent.Executor;import org.springframework.context.annotation.Bean;import org.springframewo..
Spring Boot @Async 어노테이션과 비동기 설정Spring Boot 3 에서 동적 스케줄링이 필요해 어떤 방법으로 할까 고민하다가 비동기 형태의 방식으로ThreadPool 을 만들어 실행했다. 어플리케이션의 메인쓰레드, TaskScheduler 의 쓰레드, TaskExecutor 쓰레드는 각각 다른Thread Pool 을 만들어놓고 사용한다. 여기서 @Async 는 TaskExecutor 의 쓰레드를 사용해 비동기 처리한다. 1. @Async 사용을 위한 Config 설정package com.deotis.wisevoiceweb.system.config;import java.util.concurrent.Executor;import org.springframework.context.annotation.Bean;import org.springframewo..
2025.05.21 -
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 -
classpath 란?classpath 는 어플리케이션이 실행될 때 참조하는 리소스 및 클래스 파일의 경로를 의미한다.Spring 에서 application.properties, application.yml, 템플릿 데이터, 정적 자원 등을 찾아야 할 때 사용하는기준 경로이다. Gradle 프로젝트의 경우build/ └── classes/ └── java/ └── main/ └── com/example/... Maven 프로젝트의 경우target/ └── classes/ └── com/example/... Spring 빌드 시 src/main/java 의 컴파일된 .class 파일 뿐만이 아니라 src/main/resources/ 에 위치..
Spring Boot 에서 classpath 의 의미와 경로classpath 란?classpath 는 어플리케이션이 실행될 때 참조하는 리소스 및 클래스 파일의 경로를 의미한다.Spring 에서 application.properties, application.yml, 템플릿 데이터, 정적 자원 등을 찾아야 할 때 사용하는기준 경로이다. Gradle 프로젝트의 경우build/ └── classes/ └── java/ └── main/ └── com/example/... Maven 프로젝트의 경우target/ └── classes/ └── com/example/... Spring 빌드 시 src/main/java 의 컴파일된 .class 파일 뿐만이 아니라 src/main/resources/ 에 위치..
2024.10.23 -
환경 : Spring Boot 6, HikariDataSource 사용 데이터베이스 Insert 및 Update 하는 과정에서 예외가 발생된다면 해당 과정들의 데이터를 다시rollback 해야 하는 상황이 나타난다. 이러한 과정에서 예외가 발생하지 않았을 때 최종적으로 Insert 및 Update 를 하고예외가 발생했을 때 rollback 하기 위해선 Spring 에서 제공하는 Transaction 기술을 사용해야한다.자세한 내용은 Spring 공식문서에 나와있다. https://docs.spring.io/spring-framework/reference/data-access/transaction/strategies.html Understanding the Spring Framework Transactio..
DataSoruce TransactionManager 설정(commit, rollback)환경 : Spring Boot 6, HikariDataSource 사용 데이터베이스 Insert 및 Update 하는 과정에서 예외가 발생된다면 해당 과정들의 데이터를 다시rollback 해야 하는 상황이 나타난다. 이러한 과정에서 예외가 발생하지 않았을 때 최종적으로 Insert 및 Update 를 하고예외가 발생했을 때 rollback 하기 위해선 Spring 에서 제공하는 Transaction 기술을 사용해야한다.자세한 내용은 Spring 공식문서에 나와있다. https://docs.spring.io/spring-framework/reference/data-access/transaction/strategies.html Understanding the Spring Framework Transactio..
2024.09.12