Spring 2

[Spring] 스프링부트 @Schedule 시간대 문제 해결

서버 환경에 따라 스프링 스케줄러가 설정된 시간에 동작하지 않는 경우가 발생할 수 있습니다. 특히, 애플리케이션의 시간대 설정과 배포 서버의 시간대가 일치하지 않을 때, 스케줄러가 의도한 시간에 실행되지 않을 수 있습니다. 이 글에서는 스프링 스케줄러가 배포 서버에서 한국 시간에 맞춰 정확하게 동작하도록 설정하는 방법을 다룹니다.문제 상황스프링 애플리케이션에서 아래와 같이 매주 수요일 오후 4시에 작업을 스케줄링했다고 가정해봅시다.@Scheduled(cron = "0 0 16 ? * WED")public void run() { // 작업 내용} 이 코드는 애플리케이션이 실행 중인 서버의 호스트 시간대를 기준으로 스케줄링됩니다. 즉, 로컬 환경에서 애플리케이션을 실행하면 로컬 시간대에 맞춰 작동하고,..

Dev/Backend 2024.11.10

[Spring] Lazy Loading

Lazy Loading 데이터 로딩 전략 중 하나로 연관 데이터를 실제로 필요한 시점에만 로드하는 방식 조회한 객체와 연관된 객체를 한 번에 불러오면 불필요한 데이터까지 불러올 수 있기 때문에 이를 방지하기 위해 사용된다. JPA에 의해 관계 매핑 어노테이션이 적용된 필드에만 Lazy Loading이 기본값으로 적용되며 null값이 들어간다. 연관 객체의 호출 Lazy Loading 전략에 의해 연관 객체 필드는 null을 가진다. 그렇다면 어떻게 연관 객체를 가져올까? 연관 객체에 대한 접근시 JPA구현체의 영속성 컨텍스트가 이를 감지하고 연관 객체를 가져오기 위한 추가 쿼리를 자동으로 생성한다. 테스트와 실제 서비스의 차이 테스트 코드에서는 DB에서 조회 객체를 가져온 후 DB와의 세션이 종료된다. ..

Dev/Backend 2024.03.24