springboot8 [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] Controller Unit Test에서 발생한 401, 403 에러를 해결해보자! (+ Spring Security) ❗️컨트롤러 테스트코드를 작성하는 와중에 401과 403 에러를 마주쳤다. 해결하는건 크게 어렵지 않았다!!! 컨트롤러 단위 테스트 진행 과정 먼저, 사용한 기술은 이러하다. ▶︎ Spring Data JPA , Spring Security 단위 테스트를 진행했기 때문에 @WebMvcTest 를 사용했다. @SpringBootTest VS @WebMvcTest ❗️ 여기서 잠깐! ! @SpringBootTest와 @WebMvcTest 이 두 어노테이션의 차이는 뭘까? 분명 둘다 테스트 코드 작성시 사용하는건데.. 언제 어떤것을 사용 해야할까? ▶︎ @SpringBootTest - 애플리케이션 전체를 테스트할 때 주로 사용된다. (통합 테스트) - 애플리케이션의 모든 컴포넌트들을 로드한다. (securit.. 2023. 12. 27. 이전 1 2 다음