Java, Spring

· Java, Spring
@EventListener vs @TransactionalEventListener: 어떤 차이일까?스프링에서 이벤트 처리할 때 두 가지 어노테이션이 있는데요, 사실 처음에는 @EventListener만 썼다가 트랜잭션 문제로 @TransactionalEventListener를 알게 되었어요.📌 @EventListener와 @TransactionalEventListener 비교표기준@EventListener@TransactionalEventListener실행 시점이벤트 발생 즉시 실행트랜잭션 상태에 따라 실행트랜잭션 연관성독립적으로 실행현재 트랜잭션에 종속적예외 처리예외 발생 시 호출한 쪽에 전파phase에 따라 다름 (기본: AFTER_COMMIT)사용 사례단순 이벤트 처리, 비즈니스 로직과 무관DB ..
· Java, Spring
멀티스레드 프로그래밍은 여러 스레드가 동시에 실행되는 환경을 말한다. 한 어플리케이션 내에서 동시에 여러 작업을 처리할 수 있게 해주지만, 공유 자원에 대한 접근과 수정에서 동시성 문제를 야기할 수 있다. 이런 문제들을 해결하기 위해서는 스레드 간의 적절한 조정과 자원 관리가 필요합니다. Volatile 키워드란? 자바에서 volatile 키워드는 변수를 메인 메모리에 저장하게 함으로써, 모든 스레드가 항상 최신의 변수 값을 보게 하는 역할을 한다. 일반 변수가 스레드의 로컬 캐시에 저장되어 값의 불일치가 발생할 수 있는 것과 달리, volatile 변수는 메모리 가시성을 보장한다. 메모리 가시성(Memory Visibility)은 한 스레드에 의해 변경된 데이터가 다른 스레드에게 얼마나 빠르고 정확하게..
· Java, Spring
#application.properties logging.level.org.springframework.jdbc.core=TRACE #application.yml logging: level: root: INFO org.springframework: DEBUG com.myproject: INFO 위 처럼 설정을 하면 JDBC에 관련한 로그를 확인 할 수 있다. 어떤 원리로 로그를 보여주는지, 왜 JPA의 쿼리를 로그로 보여주는지에 대해 궁금해져서 JDBC 로그에 대해 파헤쳐 보기로했다. JDBC(Java Database Connectivity) logging은 어떻게 동작할까? 로그 생성 과정 1. 로깅 요청 발생 : 애플리케이션 실행 중 org.springframework.jdbc.core 패키지 또는 ..
· Java, Spring
순차 스트림 (Sequential Stream) - 순차 스트림은 한 번에 하나의 스레드를 사용하여 데이터 요소를 처리 - 데이터는 순서대로 처리되며, 한 요소의 처리가 완료된 후에 다음 요소가 처리 이는 단일 CPU 코어에서 작동하는 것과 유사함 - 예 ) 식당에서 한 줄로 서서 주문을 기다리는 모습 병렬 스트림 (Parallel Stream) - Java 8부터 스트림(Stream) API parallel() 메서드 지원 - 병렬 스트림은 멀티 스레드를 사용하여 데이터 요소를 동시에 처리 - 내부적으로 ForkJoinPool을 사용 - 데이터를 여러 부분으로 나누어 각 부분이 다른 스레드에서 동시에 처리 이는 여러 CPU 코어가 동시에 작동하는 것과 유사함 - 예 ) 톨게이트에서 여러 차선이 동시에 ..
개발하는뀨울
'Java, Spring' 카테고리의 글 목록