BE/Spring-Boot8 [SpringBoot] 동시성 처리하기 1 [재고 시스템으로 보는 동시성 처리] 인프런 - '재고 시스템으로 보는 동시성 처리' 강의 시청 후 복습하는 포스팅입니다.SpringBoot 3.2.1 / JPA / lombok / Mysql ‼️ 이 포스팅을 읽으면 어떤 것을 알 수 있나요?동시성 처리 '1' 인 만큼 동시성 처리에 문제가 되는 코드를 보여주고 왜 문제가 되는지에 대해 다루려고 한다. 코드소개 Stock 객체를 조회하고, 재고를 감소시킨 뒤 남은 수량으로 값을 갱신하는 간단한 코드 * stock 엔티티import jakarta.persistence.*;import lombok.AllArgsConstructor;import lombok.Getter;import lombok.NoArgsConstructor;@Entity@NoArgsCon.. 2024. 12. 4. [SpringBoot] 파일 시스템에서 특정 디렉토리 및 파일 모니터링 서론신규파일과 기존파일을 구분하여 스케줄러가 신규파일인지 확인 한 후 파일 타입을 찾는 업무가 있었다. 근데, 신규 파일인지 확인을 하려면 데이터베이스가 필요했다.뿐만 아니라 특정 디렉토리에서 반복문을 사용하여 기존 파일인지, 신규파일인지 확인하는 로직도 필요했다.파일의 개수가 적을 때는 상관없겠지만 만약 천개, 만개라면....? 반복문을 천번, 만번을 돌면서 확인을 해야하는데 구현 전부터 성능문제가 생길 것 같았다.. 그래서 찾아보기 시작하다가 Java 7에서부터 도입된 WatchService를 발견했다!!! WatchService란?!- Java 7부터 도입되었으며 Java NIO 패키지의 일부- 파일 시스템에서 디렉토리의 변경 사항을 모니터링 하기 위해 사용되는 서비스- 파일 시스템의 이벤트를 .. 2024. 9. 3. [SpringBoot] 스케줄러(@Scheduled)가 간헐적으로 동작 안하는 문제 문제 발생 필요한 기능 : 특정 시간(오전 6시)에 외부 API를 호출하여 DB에 Insert문제점 : 오전 6시에 해당 스케줄러가 실행이 되어야 하는데, 출근해서 해당 Table을 확인하니 스케줄러가 동작 안하여 Insert가 안되어 있음 더 심각한건.. 도대체 어느 조건에서 왜? 실행이 안되는건지 모른다는 점이다... 로컬에서 실행하면 매우 잘 되는데 배포만 하면 잘 안된다는 문제만 파악하였다.. 검색을 해도 Timezone 이라는 말뿐......계속 검색해도 타임존 문제라고만 나왔다. 근데 그냥 뭔가 단순히 생각했을때 타임존 문제라면 그냥 그 시간이 되었을 때 동작을 해야하는데 아예 실행이 안됐으니 타임존 문제라는 것이 너무 이해가 안되었다. 해결 과정 - 로그 확인로컬로 스프링 프로젝트를 시작.. 2024. 5. 7. [SpringBoot] Spring Security Config에서 permitAll()에 대한 진실과 오해 사용 기술 스택 - Spring Boot 3.x.x - Spring Security 6 ( + jwt token 방식) - Spring Data Jpa 문제 발생 Spring Security를 적용하면서 인증이 필요하지 않은 경로를 직접 지정해주어 인증을 안하도록 설정하였다. 대표적으로는 로그인 (/auth/login)이 있는데, 로그인을 할 때 access token을 확인할 필요가 없기 때문에 permitAll()을 사용하여 인증에서 제외했다. http .authorizeHttpRequests(requests -> requests .requestMatchers("/", "/auth/login", "/access-token").permitAll() // 이 부분 .requestMatchers("/swa.. 2024. 1. 6. 이전 1 2 다음